{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Sentiment analysis with Logistic Regression\n",
    "\n",
    "### Some plotting functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Importing packages\n",
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "import random\n",
    "import utils"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "features = np.array([[1,0],[0,2],[1,1],[1,2],[1,3],[2,2],[3,2],[2,3]])\n",
    "labels = np.array([0,0,0,0,1,1,1,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plotting the points\n",
    "utils.plot_points(features, labels)\n",
    "\n",
    "# Uncomment the following line to see a good line fit for this data.\n",
    "#utils.draw_line(1,1,-3.5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Logistic regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sigmoid(x):\n",
    "    # Note, in the book it appears as 1/(1+np.exp(-x)). Both expressions are equivalent, but the expression\n",
    "    # below behaves better with small floating point numbers.\n",
    "    return np.exp(x)/(1+np.exp(x))\n",
    "\n",
    "def score(weights, bias, features):\n",
    "    return np.dot(weights, features) + bias\n",
    "\n",
    "def prediction(weights, bias, features):\n",
    "    return sigmoid(score(weights, bias, features))\n",
    "\n",
    "def log_loss(weights, bias, features, label):\n",
    "    pred = 1.0*prediction(weights, bias, features)\n",
    "    return -label*np.log(pred) - (1-label)*np.log(1-pred)\n",
    "\n",
    "def total_log_loss(weights, bias, features, labels):\n",
    "    total_error = 0\n",
    "    for i in range(len(features)):\n",
    "        total_error += log_loss(weights, bias, features[i], labels[i])\n",
    "    return total_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Alternate way of writing log-loss\n",
    "\n",
    "def soft_relu(x):\n",
    "    return np.log(1+np.exp(x))\n",
    "\n",
    "def alternate_log_loss(weights, bias, features, label):\n",
    "    pred = prediction(weights, bias, features)\n",
    "    return soft_relu((pred-label)*score(weights, bias, features))\n",
    "\n",
    "def total_alternate_log_loss(weights, bias, features, labels):\n",
    "    total_error = 0\n",
    "    for i in range(len(features)):\n",
    "        total_error += log_loss(weights, bias, features[i], labels[i])\n",
    "    return total_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "def logistic_trick(weights, bias, features, label, learning_rate = 0.01):\n",
    "    pred = prediction(weights, bias, features)\n",
    "    for i in range(len(weights)):\n",
    "        weights[i] += (label-pred)*features[i]*learning_rate\n",
    "    bias += (label-pred)*learning_rate\n",
    "    return weights, bias"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "def logistic_regression_algorithm(features, labels, learning_rate = 0.01, epochs = 1000):\n",
    "    utils.plot_points(features, labels)\n",
    "    weights = [1.0 for i in range(len(features[0]))]\n",
    "    bias = 0.0\n",
    "    errors = []\n",
    "    for i in range(epochs):\n",
    "        # Comment the following line of code to remove the plots of all the classifiers\n",
    "        utils.draw_line(weights[0], weights[1], bias, color='grey', linewidth=0.1, linestyle='dotted')\n",
    "        errors.append(total_log_loss(weights, bias, features, labels))\n",
    "        j = random.randint(0, len(features)-1)\n",
    "        weights, bias = logistic_trick(weights, bias, features[j], labels[j])\n",
    "    utils.draw_line(weights[0], weights[1], bias)\n",
    "    plt.show()\n",
    "    plt.scatter(range(epochs), errors)\n",
    "    plt.xlabel('epochs')\n",
    "    plt.ylabel('error')\n",
    "    return weights, bias"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/luisserrano/opt/anaconda3/lib/python3.7/site-packages/IPython/core/pylabtools.py:132: UserWarning: Creating legend with loc=\"best\" can be slow with large amounts of data.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEGCAYAAABsLkJ6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOy9e5Rcd3Uu+J16v5/drW5ZkiVhbEuysGVZr+6WZDAQWBduJoTLzCThXocAw9xk5l6yFmSYDIskZLLW9dwVEi5JSDIMNmtYyQoJYYAAAQz4ARh3y9bTlmVZD1tSv6q63u9TdeaP1re1q9Sth9VSt6zft1Yv2d1Vp06dU7W//fj23pbjODAwMDAwuPXgWuoTMDAwMDBYGhgCMDAwMLhFYQjAwMDA4BaFIQADAwODWxSGAAwMDAxuUXiW+gSuBn19fc7atWuX+jQMDAwMbirs27cv4zhOf+/vbyoCWLt2LcbHx5f6NAwMDAxuKliWdXq+35sUkIGBgcEtCkMABgYGBrcoDAEYGBgY3KK4qWoABgYGBvOh1WrhzJkzqNfrS30qS4pAIIBVq1bB6/Ve0eMNARgYGNz0OHPmDKLRKNauXQvLspb6dJYEjuMgm83izJkzWLdu3RU9x6SADAwMbnrU63Wk0+lb1vgDgGVZSKfTVxUFGQIwMDB4Q+BWNv7E1V6DJScAy7LclmU9b1nWt5f6XAwMDAxuJSw5AQD4TwBevJEvWCqVUCqVYHYhGBjcupiYmMCb7r4bk5OTi3K8U6dO4Z577lmUY90oLCkBWJa1CsC/AfB/38jXjUQi6HQ6mJmZQbVavZEvbWBgsEzw2UcewanpaXz2kUeW+lSWDEsdAfwZgE8C6Cz0AMuyPmpZ1rhlWeMzMzOL8qKtVguhUAj9/f2wbRtTU1Oo1WqLcmwDA4Plj4mJCXz5scfQefxxfPmxxxYtCmi32/jIRz6CTZs24Z3vfCdqtRr+9m//Ftu2bcO9996LX/3VXxWn8+GHH8bHPvYx7N69G3feeSe+/e25LPijjz6KX/7lX8a73vUu3HXXXfjDP/xDAMCnP/1p/Pmf/7m81u///u/j85///DWd75IRgGVZ7wEw7TjOvks9znGcv3Ec5wHHcR7o779oltHrgm3bKBaLKJfLCIVCGBgYQK1Ww8zMDBqNxqK8hoGBwfLFZx95BJ3/8B+ALVvQ/vf/ftGigJdffhm//du/jSNHjiCRSOCf/umf8L73vQ9jY2M4cOAANmzYgC996Uvy+FOnTuGJJ57Av/zLv+BjH/uYKHieffZZfPWrX8X+/fvxta99DePj4/it3/otPPbYYwCATqeDv//7v8ev//qvX9P5LmUEMALg31qWdQrA3wN4m2VZ/++NeGGXywWPxwPbtlEoFFAulxGPx5FOp1GpVDA9PY1ms3kjTsXAwOAGg95/85OfBAA0P/nJRYsC1q1bh/vuuw8AsHXrVpw6dQqHDx/G7t27sXnzZnz1q1/FkSNH5PEf+MAH4HK58OY3vxnr16/H0aNHAQDveMc7kE6nEQwG8b73vQ9PP/001q5di3Q6jeeffx7f//73sWXLFqTT6Ws63yUjAMdxPuU4zirHcdYC+B8A/MhxnN+4Ea9dLpeRz+fhdrvh9/th2zay2SwqlYoQQbFYRDabRavVuhGnZGBgcIMg3v/Q0NwvhoYWLQrw+/3y3263G7Zt4+GHH8YXvvAFHDp0CJ/5zGe6dPq9sk3+/0K///CHP4xHH30UX/7yl/GhD33oms93qWsASwKPxwO3241sNot8Pg+Px4NgMAjbtpHJZFCtVpFKpRCPx1EsFpHJZAwRGBi8AdDr/ROLGQX0olQqYWhoCK1WC1/96le7/va1r30NnU4Hr7zyCk6cOIG77roLAPCDH/wAs7OzqNVq+MY3voGRkREAwK/8yq/ge9/7HsbGxvBLv/RL13xuy2IUhOM4PwHwkxv1evV6HZlMBqFQCF6vFzMzM/B6vYjH44jFYqhWqyiXy4hEIkilUmi1WigUCnC5XIjH43C73TfqVA0MDBYRF3n/hIoC/uJP/3RxX/Ozn8WOHTtw++23Y/PmzSiVSvK3u+66C3v37sXU1BS++MUvIhAIAABGR0fxwQ9+EMePH8ev/dqv4YEHHgAA+Hw+vPWtb0UikVgUO2TdTFr4Bx54wFmMhTBTU1Oo1+toNpuo1Wrw+/3w+XxwHAd+vx+xWAwulwuNRgO2bSMYDCIcDqPVaqFUKhkiMDBYZnjxxRexYcOGSz5mYmIC6zdtQv3IkYsJYO4BCN5zD04cOYLBwcHrdKYX8PDDD+M973kP3v/+93f9/tFHH8X4+Di+8IUvXPScTqeD+++/H1/72tfw5je/ed7jznctLMva5zjOA72PvSVTQI1GA8ViEbZtIxqNwuv1olKpoNFooFarYWpqCrOzs/B6vYjFYmg2m5icnESr1UJfXx9CoRCy2SwKhQI6nQUVrAYGBssIC3r/xCLWAq4HXnjhBdxxxx146KGHFjT+V4tbMgKYnJzEq6++CrfbjUAgIDUBl8uFer0Oy7LgOA7cbjcikYh4+9VqVXoIYrEYarUayuUyfD4fotEoXK5bkk8NDJYcVxIBrFq/HmdPnrzssW5btw5nTpxYrFO74biaCGBZ1ABuNCqViuT/C4UCLMuC1+uF3+8XImi1WnAcB/l8HsViEeFwGMlkEpFIBJVKBZOTk4hEIujv70e5XEY2m0UwGEQoFDJEYGCwDHEzG/XrhVvSUrlcLuRyOczMzCAajSKZTKLT6SCXy8G2bbRaLTHiHo8HPp8PuVwOp0+fRiaTgc/nQyKRQLPZxPT0NNrtNtikls1mUSqVTGrIwMBg2eOWJIB2u412uy1EMDU1Ba/XixUrVqDVaiGXy6HZbKLZbKLT6aDRaCAcDiMYDCKTyeDll1/G5OQkfD4fYrEYOp0Opqam4DgO0uk0HMdBJpNBpVIxA+cMDAyWLW5JAigUCvB6vfD5fGi323AcB5VKBRMTE7AsCytXroTjOCgUCqjVauh0Omi326hUKggEAkgmk8jlcjh69CgmJyelWNxqtZDJZGQxQ7vdloFzhggMDAyWG25JAgiHw8jlcjh37hxs20YgEBDJZ7FYxMTEBBzHwdB5tUChUECxWIRlWWi32yiVSggGg0ilUigUCnjxxRdx9uxZKQbbto3Z2Vm4XC4kk0k0Gg3MzMyYgXMGBkuIVCwGy7Iu+5OKxW7YOS31COlbkgCmp6cBAIlEArZt49y5c6hWqwiHw3C73VL8ZUSwYsUK+P1+lEol5PN5ABcGyrlcLqxcuRL1eh1HjhzBq6++2iUfLRaL0mRWr9eFCExEYGBwY5ErleAAl/3JqUatNzpuORUQDf709LSoeKLRKCzLwsTEBFwuF2KxGILBINrtNnK5nJBDX18fms0mKpUKOp0OgsEgOp2OpH1WrlyJYrGIF198EeFwGCtXroTf70etVkOz2UQgEEAwGES1WkWlUkEsFoPP51vqS2JgYHCNqFQq+MAHPoAzZ86g3W7j05/+NF566SV861vfQq1Ww/DwMP76r/8almVh3759+NCHPoRQKITR0dElPe9bLgL4xje+gY985CP4+te/jhMnTuC1117DiRMnMDMzg0AggEQiIfWAXC6HcDgMy7KQzWYxMTGBVqslctBms4lqtYpmswnLsmRm0ODgIBzHwbFjx3D8+HFYloVQKIRqtSqdx8FgUOYMmcmjBgY3N773ve9h5cqVOHDgAA4fPox3vetd+J3f+R2MjY3h8OHDqNVqMu//N3/zN/H5z38eP//5z5f4rG9BAnj88cdRLpfxxBNP4E/+5E/wZ3/2Z3jyySdx9uxZnD59Gq+99hocx0EymUQwGMTZs2cxPT0Nv9+PQCAgqSHbthGPxxGNRtFut1Gr1dBqtYQIbNtGOp2Gx+PBK6+8gqNHj8K2bfh8PtRqNdi2jUgkgmAwiEKhgNnZWdi2vdSXx8DA4HVg8+bN+OEPf4jf+73fw1NPPYV4PI4f//jH2LFjBzZv3owf/ehHOHLkCAqFAvL5PPbu3QsA+OAHP7ik533LpYD+8i//Ev39/fjOd76DAwcO4OWXX8bLL7+Mb37zm9i+fTtGR0cxNDSEQCCAcDgsoyJyuRwajQYSiYRMCZ2dnUU8HpdCLyMCy7IQDAaRy+Xgdrul1nD27Fm43W709/cjEAigXC7D6/V2FY49Hg9isRg8nlvu1hgY3LS48847sW/fPnznO9/Bpz71Kbzzne/EX/zFX2B8fByrV6/GH/zBH6Ber8NxnItGPS8lbjkrY1kWBgcH8d73vhcPPfQQjhw5gmeeeQbZbBbf//738fjjj2PTpk0YHR3Fpk2bRP/PekGlUsGpU6cQCAQwODiIer2O1157DbFYTIiAaSFKTHO5HDweDyKRCGzbxszMDKanp5FOpxGPx2WcRDKZlEmlfE0zcM7AYPnj3LlzSKVS+I3f+A1EIhE8+uijAIC+vj6Uy2X84z/+I97//veLA/n0009jdHT0ovHQNxq3HAEAc0vhOQ5627Zt2Lp1K06fPo1nn30WR48excGDB3Hw4EEMDAxgx44dGB4eliFw0WgUiUQClmXh9OnTcBwHAwMDaDabOHPmDEKhEBKJBOr1OmzblrROs9lEq9WCz+eT3QP5fB7ZbBaJRAKRSASNRgN+vx99fX2ymSwYDCIajRoiMDBYxjh06BA+8YlPwOVywev14q/+6q/wjW98A5s3b8batWuxbds2eSyXuYRCoUWZ6X8tuCWHwT322GPIZDJot9viqRP5fB779+/H+Pg4yuUygLkZ3Pfddx/27NmDDRs2yJA4qoV4rGQyiXA4jGq1Cr/fj3Q6LWkhl8uFdruNTqcDt9sNr9eLUCgkBWBuJ6MUlSmoUqmEarWKSCQifzMwMOjGlQyDsywLV2LtLOCmlmmbYXCXgWVZYvjdbjeCwaDk5xKJBB588EGMjo7i2LFjGB8fx4kTJ/Dss8/i2WefxZo1azA8PIzR0VHUajUx5KlUCqVSCblcDsFgEH6/H5OTk/B4PEilUmg2m2g0GvD5fGi1WrKLQEcEjuOg0WjA4/EgFAqhUqkgGo1i5cqVMrIiHA6b1JCBgcGi4JYkAM758fl86HQ6qNVqcLlcYoiZttm4cSM2btyIqakpPPfcc9i/fz9effVVvPrqq/jWt76FrVu34u1vfzvWrl2LYrEoG8Q4JI49BdPT0/B4PIjH4+LxezweuFwuGULHHgHOH2KhqFaroVAoIJFIyAiKqakpRCIRRCKRm37y6MTEBEbf+lb89Cc/uSFLOAwujTfy/UhGo7CuoMkrGY3egLNZHri5rcfrxIoVKxCPx2FZFmzbhmVZsgGsXq9LJ6/P54PL5cKKFSvw7ne/G7/7u7+L9773vRgaGkKlUsGTTz6Jz3zmM/jjP/5jPPXUU8hkMjh37hwKhQL8fj+i0ShKpRJmZ2dRrVaRzWbRbDYRjUbh8XjgOA5cLhfC4TA6nY5IQR3HQblclqik0Wjg7NmzePXVV+H3+zE0NATbtjE5OXnTL6X57COP4NT09LJdwnGr4Wa+H5dL28wWi3Ac57I/s8XiDTrjxcfVpq6WrAZgWVYAwJMA/JiLRP7RcZzPXOo5i1UD+MEPfoAzZ86g1Wqh1WqhUqnInJ5AIIBmsynGmXn6drstkYHjOHjttdfw3HPP4dChQ1JDSCaTGB4exu7duzE4OIhAIIBQKCSRRbVahcfjQTQaFXWRbdtoNpvweDywLEvkpIFAAH6/X6aWxuNxAHMRARVIoVAIuVwOtVoN0WhUOppvFsiKvscfR/Dtb79hq/gM5sfNfD9OnjyJaDSKdDp9U30HFhOO48g4+nXr1nX9baEawFISgAUg7DhO2bIsL4CnAfwnx3GeWeg5i0UAP/zhD3H69Gn5oLRaLUkFsUkrEAjA5XKh2WxK0xaNtfa4y+UyDh8+jGeeeUbmBLndbrzlLW/Bgw8+iHvuuQderxfhcFjy/dVqVUZJxGIx6Squ1+tSIKaKiDUKFo9jsRjcbrf0ENx2220IhUIyufRmKhb/x49/HF8C0Pzc5+D7+MfxYcta9IXcBleOm/l+tFotnDlzBvV6falPZUkRCASwatUqeL3ert8vOwLoOgnLCmGOAP5nx3F+sdDjFosAvvnNb2JqakqKwJZlwe12iyffbDZRKpXkwxQMBiVC4OawXgVRp9PBiRMnMDY2hmPHjkkoNjQ0hNHRUYyMjCCdTsvzSSjVahVutxuDg4OIRCLSQ+D1euH1emHbttQoQqEQ2u221BM8Hg9KpRLcbjdWrlyJSCSCQqEg+wtCodCyJYKLFnTf4IXcBt0w9+ONjWVJAJZluQHsA3AHgL9wHOf35nnMRwF8FADWrFmz9fTp09f8ul/5yldw7tw5UdM4jgOfzwe32w23241WqwVgbnBcpVJBvV5Hq9WSIi2Nvt/vh2VZF3kds7OzOHDgAMbGxlCtVuWxW7duxUMPPYQ777wTLpdLxkd7vV6USiW0Wi309/djcHAQ5XK5y/CzcO04DgKBgOwsZgSRzWYBAKtXr0Y4HEaxWJT9xcFgcNl1Fmtvk7jZvM43Esz9eGNjWRKAnIRlJQD8M4D/xXGcwws9brEigL/7u7+TFJBt2wiFQmLMaZiZHmJ+vlqtolQqodlswuVydRGF1+sVRY/jOFIraLVaOHbsGH7+85/jzJkz8vrr16/H6OgoRkdHxTiHw2HE43EUCgVUq1X09/fLmOlyuQzLshAIBGRDmeM4UkjmZrJIJIJcLod2u42hoSEkEgmUSiV5jz6fb1lMH73I27zwB+N1LgHM/XjjY1kTAABYlvUZABXHcf7rQo9ZLAL40Y9+hMOHD8O2bXQ6HdkB7DgOwuGw/Delme12G41GA263G41GA8ViUbxxv98vBhmYaxpzHEe2iBETExMYGxvDoUOHhDii0Si2b9+Od7zjHVi5ciWAuS5lDpjjMvrbb78dtm3LAntGAKxHuFwuWWzPruJ8Po9ms4kVK1YgkUjIDoJAICDppaUqls3nbRLG67zxMPfjjY9lRwCWZfUDaDmOk7csKwjg+wD+i+M4317oOYtFAM8//zymp6dRLpdRKBRkiXur1YLjOF2pExpYEkOj0RDDXqvVUCwW0el0xBvn3zweDzweDzqdjhANn3Pw4EGMjY0hk8nwWmDDhg146KGHsGXLFhkfnUgk4HK5MDs7C7/fj9tvvx1utxvF83I2GnGSDWVsfr9fJpXm83kZYZ1MJiWC8fl8S0IEC3qbFx5gvM4bCHM/bg0sRwJ4C4DHALgx14/wD47j/NGlnrNYBDA1NYXTp08jl8sBgEzi1J49RzvT4+Z/cyx0p9ORyZ9cE9lqtaSwrL1/GllNBI7j4NSpUxgbG8PRo0fl9319fRgZGcGePXuQSqWkJyEajSKXy8mGMnYKsyjs9XpFzUQi8vl86OvrQzAYRKlUQrvdRjgcRuz8yjuPx9NV+7gRBeNLeZuE8TpvHMz9uDWw7Ajg9WCxCODUqVPSTau3frlcLlnbyDlA7Xa7K9fv9/vR6XTg8/lEZVOtVsXgc9sXowI949/tdkutQBNEsVjEc889h3379qF0vlPR4/Hgvvvuw9ve9jbcddddcLlckt6pVquwbRt9fX0Ih8MiVeXxAUhDGc8jmUwiGo1KQZtLaVgX0DWQ61kwXrV+Pc6ePHnZx922bh3OnDhx3c7DYA7mftwaMASg8Morr2B2dhadTgedTkeKwOVyGfl8Xrzo2dlZ5PN5UfLQqHLeP1MnfH69XpdUTKvVQrValfoADb9GL0G0220cO3YMY2NjOKG+bKtWrcLevXuxa9cuRKNRBINBxONxWUTD5TU8R5fLJT+MCmzblrlE4XAY9XodnU4HgUBAhs/xfQC47kRgYGBw42AIQOHIkSOYmZkRo8n0jM/nQzgcRqvVQqlUQqVSAQDU63XkcjmUy2XpCGY6hykiplzi8bjUE/iYWq2GarUqRKC9fwCSMrIsS0hhZmYG4+Pj2L9/f1c/wrZt2/DWt74Vq1atQjAYRCKRAADJ/eu8PomMyp92uy3NZv39/QiHwyI1Zb2Cx9SNJEtZMDYwMLh2GAJQOHv2rCxvbrVakkN3u91SJA0EAggEAigWiyiXy2g0GrAsC7lcDsViUVQ1TL+w6Mu+AjZqsaOXpNBoNKRW0Avm4EksnU4HzWYThw8fxtjYGCYmJuSxd955J0ZHR7F161aRgHKgHQCpV2jDzRQP5wu5XC6kUinpM2AXcrPZRDAYRDqdFnIDLgywMzAwuLlgCEDh+PHjAIBKpSINVkzP+P1+MZI07KFQCJ1OB8ViUVRAjUYDmUwG5XJZlsLX63XpKna73ZJeisViEjk0Gg3p7u0dK0EwXUSDTWI6e/asLJlm6igej2Pnzp3Ys2cPVq5cKXr/UCgEj8cjs4Q42oIpKp/PB9u2RQKbSCSkw5nF4UqlAr/fj5UrV0rtg/0HhggMDG4eGAJQeOmll3DixAn4fD7cdtttMhSOBplKHjZ4sQeAKRZGBNVqFV6vF5lMBoVCQQiAc32Y8qH2PhaLSb8A6wqcQMox0b0gGTAlw9oCl9bMzs7K4zZt2iTzhyKRiOwq4LYx27al8Evi4RA6jrpIJpPw+Xxot9tS5C4UCjJjhNJYymNNncDAYPnDEIDC4cOHUSwW4fV6ZYBbKpVCNBqVPD9loBwMB0CKu0wP0ZPnALlWq4VcLifzeHQPACMDykg514eLYhgdXG6YFTX8JK355g8NDAxgeHhYpKTcNJZOp1EqlWRWEI15u92WPD9JMJFISEoqHA4jEAggm83C7XZj9erViEQiACDjtHuHTxkYGCwfGAJQOHjwICYmJkTNEwqFRLHj9/tlxy+NOKMAFmmZ+2d6yOv1SkMY5aP5fB6lUgnlclnkmLVaTfoGwuGw7Aygbp9RQb1eF0XRQmDxmZFGPp8XKSmL11xl+dBDD+GOO+6A2+2WxTLtdhvlchlut/ui3QgsRHc6na55SdyRUCgU4DgOVq5ciVQqBQAilV0OoyYMDAy6YQhA4bXXXsPExIR4+1oK2ul0UCqVZKxCOByWEQx8LOf183fsHGbBlGTCHxaSadS1iohz/6nHtyxLdP5U7SyUHiL0UDrbtnH06FGMjY1BD85bs2YNdu/ejZGREXlv/f398Hg8mJmZgcvlQjKZhMvlEikpaw9utxuhUAjAXIG6r68PPp9P0k8DAwPo6+sT2SlgCsYGBssJhgAUJicnRe9frVZRr9dlHATn/3g8HvHek8mkKGWo4KHBdbvdkgfnzl+/3w+Px4NarSZRQavVkj4DFpKZ9mFOPRqNirHlsDn2EfAYC90veu7AhX6F6elpjI2N4cCBA0IioVAI27dvx9ve9jbcdttt8Pl8sryGnj3fP+Wpbrf7ot0ElmVJeimfz6PdbiOdTmNwcLArgrhRHcYGBgYLwxCAAtc0lstlaZiiKqdQKEgqhHlyLnBh7p7jm2kYWRtgcxijAhaNWQuo1+tCOJVKRYw6iYCjpr1eLyKRCHw+nxh1pno4duJSayBZwGak0Wg0cOjQIYyNjWFqakoed/fdd2PPnj249957EQqFMDQ0hEAggGq1ilqtBr/fL4VrGnMSQiQSQa1Wg9vtFrlooVBAu91GLBYTUjFEYGCw9DAEoMDNXrZto1wuy+gGvRCmWCyiUqnAtm3EYjGEQiE0Gg0Ac8XgaDQKn88nRpuy0VarJeohRgmMCDwej7wuxzy3Wi0pGlOSykjDcRxEIhGpNTAqoFHl/KGFwPPgfCOushwbG8MLL7zQtcpyZGQEIyMj6O/vR39/P2KxGJrNpjSKcY8x00OUg7KZrNPpSKTEongwGMTAwACi0ahcX1MwNjC48TAEoED1Dcc6OI6DSqUiy1/4+1qthkajgXw+L+sWmaapVCoyJZRSylarJSOjGRVQgkkv2u/3w+/3i4FnvaBWq6Fer0uTGef+M13EYq3b7ZaR0yQknvdC0OkhElW5XMbzzz+P8fFxFAoFAHORw7333ovdu3djw4YNSCaTSKfTUhCnpDUYDEo0wqmk0WhUis+aCNrtNvx+P/r6+qRrWc9WMh3GBgbXH4YA5gG7c9kNDEDSNLoQS2NcLpcl9cOVi5wIGggEpIiriYWevR4PTbURu495HtVqVQrTHEXBFA47iIE5WabX64XP55PmLtYUaMwXAhvACNu2cfz4cYyNjeH48eNdqyx37dqFkZER3HbbbTJ7iESmR2SzYY67jyuVClqt1kWdxACQSCSQTqcvWqhjiMDA4PrBEIACu2NpdOitM/fP35VKJfHMafwAyA6BSqWCZDKJSCQixWGmazg+mjOC2HXMpTNaCcTZ/CQOThRlOqhcLkukwLQMV0JGIpGuAW4c/sZNYAuB50e1T6PRQC6Xw/j4OJ5//vmLVlnu2bMHGzduRDQahd/vl2tFBZWedMpVl+ySpsHnNefIir6+PgQCAYmGTJ3AwOD6wBCAAtMg8xkdLdOk5p/D3BgVWJYlqZlsNotSqYRAIIBYLCZTQb1er4xUoGGn1p5yTY6doJfPcQ08H104tm0bpVJJ8v7NZlP2AQAXmrWo2ed7YaPapcBCOEdHVKtVvPDCCxgfH8drr70mj1u/fj2Gh4cxOjqKVColEQiJgOOyGZVwVSUb3OLxOABI9MP0EEdVs05gOowNDBYXhgAUWIzU6RPmyeeLCmjkOCWU8//1qshMJiOa/UgkglAoJM8NBAJCJppsWHzudDqIxWKSQ6cXDVwY4Far1SQlxCJ1vV5Ho9GQZS80wlQq8TiseVwuPQSgy1NvNpuYmJjA+Pg4Dh48KCmbSCSCnTt3Yu/evVi3bh18Pp+QDwmSIyfYMxGLxVAqlSQC4uRRrtzkPCLWCUyHsYHB4sEQgIJeoUhvkwYfuLiJSadr6GFTPUSSoAEul8tSKwgGg5InB+bGOfO/9cA4zg6i1JSRAvsK2GtAwuLmMqaDKCtl2ojvIxQKySC7XhK7VJcxADG+Pp9PSObAgQMXrbLcuHEj9uzZg+3btwsRsLbBKIBRUG+xmPWBYDCIaDQqKatwOIy+vj4hFMDUCQwMrgW3LAGkYjHkzm/ZIqikoeF2u91IRLaXsZAAACAASURBVCKYyma7Vjf2eqC6aMzf0/gyKqDmnx53uVyWHb9M8bhcLjFoOt1BNRLTU1QQsYmL6hvOFaJeX6eKdGObJi2OiwYuFIKZ2rocWOBlxHPq1CmMj4/jxRdflH6EdDotqyz7+vpkKikJk9f8s3/wByicJ89IJCLSWb/fL4orl8uFRCyGf/3BD5BOpxEKhaROYDqMry8mJiYw+ta34qc/+YnZAbwMsFj3YyECWLJEq2VZqwF8BcAggA6Av3Ec588X+3VypRJ6Ka7s86Hl8cALwPJ44G63ESkWxfBy4Bpn/gAXogKObWDR1+fzSRqDhWG9cpED4ur1Omq1GrxerxhyvYiFZMDR0a1WS1JEzLWz50Avb9ELbLjysVarIRaLoVaryeRSpl+oVKLnHQqFhDwWai5jBETlz+bNm7Fu3TqUSiWZP5TNZvHNb34T3/nOd7BlyxY8+OCDuOOOOxAIBJBIJKSWArcbj/h8cPt88DUaCDebqIRC8LXb8HY6qA8NwWvbeO/MDADg3LlzstJSj9U2BePrg88+8ghOTU/js488YnYALwNc7/uxlEvhhwAMOY7znGVZUQD7APx3juO8sNBzXk8EYFnWxQQQCKAeCMA5/3dvq4UVrRay2azINZki6V3o3lug1EVjRgXs8qVah5p5joFgXwDJwOPxwO/3Cymwk5fz9+nNszuZUYHjOAgEAuIZA3NjpklajEwYKZAMgLnCL9VKfE8knUuphwh2PXc6HVQqlUuusnzggQcQjUaRTCbxuc99Dv9bu4223w9vrQafZSFQrSLQaKASDsPXasFfreLD8Ti+8IUvYGhoCD6fT+S2HGZnRlIvPiYmJrB+0ybUH38cwbe/HSeOHDFRwBJiMe/Hsk8BWZb1/wH4guM4P1joMYtFAHWfD+VQCJ3zOWVXu427vV68/PLLUnxl3p0GXHvr8+Wle4vGlGSyHsBCJ4mA6hymSPSSdh6Tc/u5pYuzgdrtthRd2aRFAuG/7CugoSQh1Wo12V2g3xulqZSUUsJ5Oeg9CYVCAdlsVqSkepXl9u3bMTIygsOHD+O/r9cRq1RgdTroeL1wAPhtG9FSCW7bRsPvx//qOPjKV76CQqEAr9eLVColEVWn07moTmAKxteO//jxj+NLAJqf+xx8H/84PmxZJgpYQizm/VjWBGBZ1loATwK4x3Gc4kKPWywCAADb7Ubd70fL7UbL48EGy8JLL70kEkpKGmmA9VJ3poMW0q/rojGVRRwtUa1WhQi4+5eEwtcOh8MyVI6RBYezsW7BQXX05KlAYspIRxGUi2pJa6VSQaFQkG5dRjx6bIXb7b6i0dQEaxyMJI4cOYKxsTGcO3dOHjM4OIh33XEHtvT1IdFoIFEuw3IcwLLQBuDvdBAvlfDhVgtf/OIX4fF4EI1GUSgU4Ha7JZJgnSUQCKCvr0+uFe+dKRhfHcTbPHIEGBoCJiYQvOceEwUsERb7fixbArAsKwLgCQD/p+M4X5/n7x8F8FEAWLNmzVY94vgKj38RAbTdbrRdLlgAPK0W6oEA+t1unDp1SvLxWttOY0gvszcq0AZUGx/+np3GLNxWKhUpdjIfTyLgOAnu5WXxWBMB0zZUD9Hwh8NhGWFRr9cRDoe7lsIz/cTGL6aGuLuAG80YrbC2QbWO7ju4FFg0ZlPbvKssQyHsWL8ew+vXY43jIFIswtvpwNNuo+314k8dB3/0R3/Utbg+HA5LDwUX3LhcLtnMxjoBX8MUjK8c2tskTBSwdFjs+7EsCcCyLC+AbwP4V8dxLvuuFisCaJ5PO9DzBIDgeYVLvV6XVA6NPHBBm880Aw06owIavIWiAhZwgQvL36kS4pwdy7JQKBSQy+XktZlySqfT4tkTLFRT1loulyUvHgwGpYjM8+M5UcZKNRGlq/V6Hfl8HtVqVaSkei8ySZHX6ErAJfVMfT399NM4evgwZotzgZ7LsnDP6tXYdeedeEsohGSjgWCthv/abuOTn/wkLMtCJBJBJBJBqVRCKBTq6t8Ih8OIx+Pw+/2ycCcejyOZTHZNMTUF44Vxkbd54Q8mClgCXI/7sewIwJpzkx8DMOs4zn++kucsGgF4PGj6fHDbNmBZcHc6CJ+XYAJzxl2vadTXiMZde+OXigp6G8x6i8aWZYmGP5/Py2Pb7TYmJye7OpKbzaZ01wYCga6ZQsyDc4kMi72c38/3Q+Ji8Zhevc/n65K0kpw4vZTkFYlERDrLBrMriQpIQM8//zzu8vtxcnYWY4cP46XTpy+ssozHsfOOO7BrzRr8tNXCww8/3DUviQ12lUpFiEWPn4jH45IO4+OTyaTcD1Mwnh/zeZuEiQJuPK7H/ViOBDAK4CkAhzAnAwWA/91xnO8s9JzFIgDb7UbN74cFAI4DC0Df+bWKepib3hVA/T+vFx/HZikA8yqIAMzbYMZCLUmCBrVYLCKXy8m5ulwuTE1NSe2AjVmdTgfxeFz2FXPsRO/mMkYBXObCFAp7GZi3ZzqJBrdQKEi6qlgsyiwiABeRAQA55uXw8ssvY7NlAa0W4HJhyrKw76WX8NwLL6B8fmSFz+PB7evW4T3veQ/uvvtuhMNhaRSjVFaPkmCUw/sQCoWQSCSkPyIYDEoR2Yyk7saC3uaFB5go4Abiet2PZUcArweLWQR2ANgeD2y3G223GysATE1NiYHu9RQpk2QHru4kpgyT3vVCCqKFpKQkAhaNPR4PCoWCDJ2jUS6VSiIlpeafz0kmk12STi6yoYesN4qFw2Fp6mo2mzK/h6qjSqUiktNarSYrLavVKvL5vFwHGn+d5uGcpIVw5swZrLIsWLYNd6sFX6cDy7ZRDARwdHISY4cP45QqGq9evRrDw8MYHh5GPB5HJBIR480ua90pzVEczWYT4XBYHs9r0dfXh2g0Om/N5lbEpbxNwkQBNw7X637csgSwUCcwtf3AHEn0JRI4+dprXekeRgDMz+suXBZftVRyvqhgPgURgHkLlb1FY6aiCoUCZmdn5VxYNG61WuL1U3IZCoWkGEwiYNqJ+XsaeM4o4j4CXhvu/2V3MzX/bHQrlUqiIGKKiERHySr/7cXU1JS8Txa7SaaNRkOe99JLL+HYsWNCJqFQCNu2bcPo6CjWrl0rU1B1PwPfE/snSHRerxfxeBxer1cK3Zw7RJK+VQvGq9avx9mTJy/7uNvWrcMZ1eNhcH1wve7HLUsA84HGeD4jzPw8jRq9aj6ORh6A5KZJBppQ+Hj+0CADuOKogMcjYRWLRWSzWTSbTelKnpyclN4ApnjoFXNZjdfrlSiCiiFOCuX75LgFRhUc3cDiKUdGxGIx1Ot1zM7OolKpSIRg23aXSqj3Wl1JcxkAWZhj2zZyudy8qyzvuusujIyMYMuWLYjFYrI+k2olFo5brZZEMgTTSXyfVBPxXpqCscEbEYYAFKj20Z465Z/acOn1iwSjARplXj+PxyPqGBaO6ZXqqID/3asg4ohqHqs3KtAFXOblc7mcPJbpGco2WQNgbcDv94vH7/V6u4rblITato1QKASPx9OV82etgAVretdULVFFxJqBVhHRoDabTalzXAlcLhcikYgoll599VWMjY3hyJEjcoxEIoHh4WHs3LkTQ0NDUiRmBGPbNlKplMhIfT6fSEl9Ph8ikQiAObINBAJSJzAdxgZvNBgCUGAXbO/QN+bAtYcOXFDu6CKn9vJZBwAg/838eqvVuujvNMK9g+D0SIbec5ivaMzFLzMzM11L2zOZjCiGuIeYkQxXOjJvz+OSjNi1rNMplJdSPcQdBjSknEeUzWal45hrKovF+fv6dFrsUqAHzx6KfD4vqyzz+TyAOZLZvHkzhoeHsWnTJkSjUUSjUYkCOG6bSiA9p4nNZVRBuVwupFIpIR/A1AkMbn4YAlCgOoaGlMaInp/f7+/yVntTRDTEBD39+VJEeoRD77WmlJSGXhMFu3jnK1bSqHEwHLX82WwW1WpV3lM2m+3yfvXGM+bOuV6SMlNq5/UwOo6xZs6fIyf0whymnLxeL3K5HMrlshSs9ZTSawHJi+s5jx8/jvHxcRw7dkweMzg4KFFBX1+fjIxgjwBnL+nxG7yW3HbG95hMJqVO0HsPDAxuJhgCUNAeMfP3ALoiABYGORunt+GLnjOjAt1BrJeq6DoCX2u+SIJ5ehZStYJI78/VOer5Oo2ZO89kMmL42enLrmCeJz1ijouOxWJSX2D6hzOFmMKhV82owOPxSKRAkuNMIzZ/lUolaTTjf18LmNKyLEuIb9++fXjuueekVuHz+bBlyxaMjo7iTW96E5LJJAYGBlCtVqUuw/sdDAYluqFslHsUWq1WVz8Bif5WLBgb3LwwBKDA+TY0ptSScy6OZVliwHSKiF45gEumiHT+v9ez13JSFm8JPl4TQa+CyDk/WRS4OCqgmob1iUqlgqmpKVHl1Ot16TLm0Dg+nimxWCyGeDwu58tog9eHaRKem44KGCkwBUZy8Hq9ohxi4ZhqIj739UB79Dw3zh/Sqyxvv/12jIyM4P7770cqlcKKFSu6xm1QRsp7ReWU4ziIxWJCwF6vV+YO9X4GDAyWMwwBKORyOVQqFTFQ9NqpfKEaRksbtXSRZKBHO+g9vtoYA+g6PsGogPN5GJUAFwiEdQkaGo5iuJKoQBeNG40GpqenxWv3er0iI6UnTbkktfRutxupVEqKpgAkUiKB8lz4GBKoXnLPLmK9prJYLMpwvGazidnZ2WuOCjgigsVvzh86cOCAXKdwOIzt27dj9+7dWLNmDVKplPQUMBVEaan+XLTbbVEa8dqk02lRFxkiMFjuMASgwLHIzM3TqNOz06MeaKCBC7UAesTaW58vRaSloYwkdBqGoNfMEQ7M1WsFEY/L15uvVqA7XOcrGjuOg0KhgOnpaRmfoJvN+FymRarVqnjBzIWT4BiJ1Go1mWXE90UVEKMCHpM1i0AgIDP+uUuZ6qFcLifS1NcDGnDej2KxKKssZ84vmbEsC3fffTdGR0fxlre8BQMDA3L/OVaDG9R4XajyosqIpBKPxxGPxyXlZzqMDZYjDAEoaIkn8/j8oVGn90zD5na7hTSYqqER5BefqSTtwQOQPL0mAzZ19XqO9MAbjca8KSV9br0KIh0V6Dz1fEXjWq2GiYkJMd5U8bAngEofTiKlmonGkhELG6vYTMa6AhfXsH7A/QUAujZ6McJh4ZipnFwuh1JPA9/VQBMSiZxLa/Qqy2QyiV27dmFkZASrV6+G3++X7mHbthEMBiVdRhkt1UOUkbIHI51OmzqBwbKEIQAFdp/S46dx5g9n7bAWoEc8sOCp6wXaC6fXyBoCcCFF0+tB0whpg6ELxwAkKuBr6aIyjed8UYHuztW1it6ViuwqLhQK8p7ZbEatP88rFAqJ9JKeL6W0TA8xfaYjKxIF6wfsvdBqKc40qtfrKBQKotQqlUqYnZ294umj84HXlmm7mZkZkZJSpurxeLB582bs2bMHGzZskLETJHXOUgLQNRmVhMlr7vf7kU6nJbVmiMBgOcAQgALHHtAIsxAMQCIBeu0kCz6GBpX/32q15Hh6EiiLq71NXzqNxNeiMdFevpaTcmwFIwP9e+CCnJQ/fG+MMuZblNJbNOZ1mZiYkN9zCBz3HrNoHAwGZQyG3+9HOBwWXT0LwDT6XIupVTZMq9Gj1hJc3ZzHJjOmiJiuupL+gYXAjmFGHS+99BLGxsbwyiuvyGOGhoYwPDyMkZERJJNJ6Slg2ow1Dr0jgoSphQKUoTI6Mx3GBksFQwAKtm3L+AJ2uZIMKP3kHH6dKqLx5WPo4VFSyImaulOYxpQpIhpRnSLi8WkIge7CsSYDAJIe4rF1VEByYtpKE48eYDdfVMD0hW3bXUXjarUqMtJIJCLRjPbaWTiNRqMSDTEKaTabkj7TJMV0j/4d3zsb0bR6ifetWCyiUChccujc5aCvUbPZxMTEBMbHx7F//34h9EAggK1bt2LPnj24/fbbEY/HEYvFulJxVAz1FtO5jKfT6SCRSCAajV6UujMwuFEwBKBA75VGlmMQSAYM7Wno9Qx/FnZp6FnUBLq1/DTSC9ULqEEHLkQOureAxoOpHa3fp8Hn+XC+D6HlpFcaFfR2BNPI5/N5ZDIZSV9ls1m0Wi0xaLpRjNeFOXRGCrpWUKlUJEIgabBOQFkmoyFeG31dy+Wy7E9gs5kePXGl4BwmAF0KpdnZWZGSnj17Vh6/fv167N27F/fddx/S6TQikYhcY0ZIrBnws9TpdBAKhYSIw+EwEomE3EvTWGZwo2AIQIEdrvSKCZIBpZIcLkYPnnl9GmkaYM4VokFg7YCpDB6TX3r2F2i10aVSRL1efm+KiE1mTFnRE2X0wFoB/9U9CToNxBRFb9GYs4ZmZmbEO56dnUW9XkcgEJDOadYJ6PFTShmPxyW6Ya1Ab1+jV0wFEXsI+H75HvleqFDS6zXL5TJKpZKc35XC7/dLJMF75jhO1yrLQ4cOCVlEo1Hs2LEDu3fvxqpVq5BIJCRS0Sk/7e03Gg2JnPg6fJ6ukxgYXC8YAlBgHwA9b3ppJAMaHk0G2mOnodBEwOIxm65oCPgFJ3mwU5V5YS0ppYHuHUw3X4qIUQE9dR6Tc/5ZyAYgx9eqG+r0+TyShk5NMQ3GojEfk81mUSgUAAD5fB61Wg2dTgfRaFSOrb1/EollWYhGo0JqHFPBfgCd+qnX6zKOmteeEQPHYDOlxkX35XJZ0kMsVl8pSIwk2mg0CuBCUXr//v0YHx9HNpuVz8jGjRsxMjKCTZs2oa+vD5FIRHL+vN6dTkdSjPzsMGK0LAvJZFIiEFMnMLheMASgwFkyzKMzb8tZ+FdLBlSA6KiAIx9o2GkQSA5UywAQuWlvtKEN9EIpIkYCLFDr57BoTOPaW2jWpKOjAj2GujcqYOQCzA2Oy2azsG1bxkLX63XE43E5Lo0dz5f/hkIhIUV2A7NozK5bRkYcoaHVVPyXaTruQOa4iUKh8LpqBYw4eH85EoJEeOLECYyNjeHo0aNyzfr6+rBz504MDw9jaGgIiUQCsVhMrqeePUQi47F5nTnAjqRu6gQGiwlDAApMUfDLqLt36XFyWNp8ZMCuVRZ26TkzFdKbImLdQDcVMV3EIqSuSQAXtmv1LoJnSkb3FmhJKY+vU0RU5mg5KVMONDYkKU0gwIUGNt3ToLuiLctCrVZDPp9HsVhEp9NBLpdDtVpFIBAQj5ge+wfe9z4U1cA6ACiXy12NVJZloT+Vwv91fuMRz1GPndBEwFSW3++XtBv7Eri3YHZ29qr7CvS9Z1RD0s5kMti3bx/27dvX9XnYvHkz9u7dizvvvFMURFQ78TOkx4Kzh4ARYTAYRCKRkGF7hggMFgOGABS0GoZ5aJKBloHSqDAyoBdNMGeti65MIfB5jAR6yYCRA7/klKHW6/WuIW3a6yZh8DV0ioiGkQaeqQft3QPoSlVpOWmvvFUriLQh1LONeN1IKJ1OB4VCAblcTgqqer2k2+3Gww8/jG+XSmi73eh4vfDUaqifT7d4mk34Wi04Lhfe7nLhu9/9LkqlUpf6iveI71kTAVNHrBOwe7fVaiGTyaBWqyGXy4mi6EpAUtZS1UAgILWMZrOJo0ePYmxsDCfVJqdVq1Zh165dGB4eRjKZRDKZRCQSkePxGupOaRp9EmYikRAnxNQJDK4Fy5IALMv6fwC8B8C04zj3XO7x12sjGL+UV0oGnAGzEBnQsJNkKBHk8fSIaABdM3/0HJ3eegGJSxeb+Xe+np42SjLQXbG83ywyMyrQTVkkFxok4IKCiM/VUtL50kPlchm5XE4augqFAmzbxic+8Ql8ybZhAYiWy3A7DtpuNzzNJmyvF02vF47LhXeVy/jxj38Mj8cjIym4q0B3UXML2XzyWtYTqMzRXcblchmZTAaVSuV1f45IwPw5c+aMSEl5b4PBoEhJ165di4GBAQQCga46AIvnTH3xeew70FvPDBEYvB4sVwLYA6AM4Cs3kgB6jS9z+DotcrVkQGN7/n11FZlp0EkGPAcdFVAaqZuMdH1B1wtYWAUgKSK+tk4R6X27AMSg6N4Cpo+YItKfBxZ0dROcJoreqaTMldNIW9bciAhq923bxoc+9CH8YTAIb7WKRLUKuN2IlMvw1etwzl8nn23j7ZEI/vmf/1miKR7bcRyRkjJdx/emdzST+FiMplrJ6/WiXC7L2OxarYZsNovZ2dnX3WDG1+I1rdfrOHjwIMbGxjA5OSmPu+OOOzA6OootW7ZgYGBAUj38jOl0HwldF+0jkYiklCiLNTC4EixLAgAAy7LWAvj2jSQAFoCZe6XRoNdLD/pykQENEg01w3mdZ6cnz1y1jgyoDtGRAdMz/LvujvV4PF1GTvcX6BQRoRvN9LIXnhdlmrpWQHLUHcr09HXaitDqmUtFBe12G6VSCVu3bsW/ut3IJhIoRqPw2jZC5TK8AAKtFuK5HODxYNhx8POf/1zkoiQCRkBMlbEzmNeb00/5njUR0MP2er1dctVqtSorNnO53OteXMNUEe9Fo9GQVZaHDx8WwozH49i+fTv27t2LVatWyQYyprN66yG6yE+nIxaLyfpOUycwuBxuWgKwLOujAD4KAGvWrNl6+vTpa35Nri6kwaI0z+fzdU3+5Bat8+dxSTKgMocS0VAo1JWTJ0gGWulBD5tpGXr8NPYkJi0pZbMZI5feFBE9Y53fp5fM96Q9eN1/wL/pnQU0RFrfztQWMV9U0Fs0jkQimAoGUQ4GUfH7UY5EkI1G4Xi9CJTLCLRa8LXb+JVqFU8++SQAiOS2WCxKmkerpLiQnhEPr6ueU6SlsFqeyYiM1zqXy6FYLCKTySy4zvJS0JJaXTgvl8syfyiXy8ljN27ciL1792Lz5s1Ip9OIxWLy3kiuoVBIjkcitKy5XQiRSEQa78wkUoOFcNMSgMZiTgOlFJT5ZQDS1dtLBvTGXy8ZhMPhrpHNPAeuUqRhAi6QgW440/uFtReu5+Zw5g7fhzbE2jDQAPYqn5g20lM7eTxKVhmZ6HqAno2jFUS9UQFTONFoFMW5g6PldqMYjaIcCKAWCiEbDqMaDsPfbOI/l0p47LHHEAwGRUmkayOVSqVrVIbf75d6gCYKgiTAIjFVXrVaTQibkz65y5hy0tnZWYm6rhQLRUa2bcv8oZdfflmu2cDAAHbt2oXR0VGsXLkSyWRSIjQdVfD+ahIMBoNdMtLeceMGBoYAFNgJzLxrp9OR8QI0hvSi/X6/pIV06kaTgR79MB8Z0NvUM2J0B7ImA3p5uhDLdEa73e7aGcC0EA0wiUMPp6PMVXcC0zjQoGjS0ukrepo0ZAC6Xp9EQUIkgfb2I+jGNpfLhabHA8ey0Ha54O50YLtcqIRCKIfDqFsWsskk/o9kEp/61KekSSocDst/831zUByvMc+X94OpPpKBZVldS214XlxzyWMzKmBzGYvYVDVdDfi+mVak0e50Ol2rLHlcn8+He++9F3v37sVdd92FFStWdA3N4/MZMZIMqIJiMxoH05k6gQFgCKAL9GZpELT8EYDMmdHpFb/fL9EB8+ks6vb2CdBA0kgy7cLnaTJgcxQA+W8OSKNckEaEKSnWCziGQtchSBpsNtNRDF9DdwTzvDm7hueqC8S9aiDHcSRNpQ0sjRQNqR77TCKJRCKot9twdTrouFyw3W60XS64Oh04loVqIIBKMIhdHg++/vWvI5vNykaxYDAoPzRwbFyjsdapKubhm80myuVyl1JIk0G5XBZVDg0r7w8jvVKp1DWRNJPJXNVnTo8AAdAV8TUaDRw+fBhjY2N49dVX5Tlr1qzByMgIduzYgcHBQcTjcakF8LqylsH6CD8HJAGqh0yH8a2NayYAy7J8AO4G4AB4yXGcq4uJ5z/m3wF4EEAfgCkAn3Ec50sLPX4xVUAcQ6DDdKY4aDxcrrmdt6VSSYwiyYDdp7pgTO+MRqaXDBgZ0JNn+M4URO+oB00G9Oa1VJRpIebqaeyZxqER5jwaFnbplTuO05UiItkxRUTCot6eHby9clKdotKFTB5L7wqORCKoOA4cy4LlOPCej6RaXi86ADrno4KEx4OTJ0+iUqlITp7zhZiuoSqG78Hr9SKXy3VFY0wb+f1+WTijm8lYdwEgxWYAstCGpK/lrYVCQQrHmUzmqgfR6esHdM9/mpycxDPPPIODBw8KQYXDYWzduhUPPvgg1q9fj1QqJfULOhkkcD3yg88Nh8OIRqOy/9jg1sM1EYBlWf8GwBcBvALAArAOwP/kOM53F/tEL4XFVgHRyOsVjCxWMkLQzVrMDdOT0x2u1G3rrmCdOqGnx9w+G7j0AhqOR2ABmUa6lwx0E5hWBzGVwzWNTAswUmFuWNcLWLjVxyJIDIwK9PujkdEpIs4h0tNJaXAYFaxbvRr5852zeiyCHpDncrmQjMXw2rlz8n7YEJbJZFAoFOA4DuLxuMxyikQisr2L5Fgul6XYT3Ki0eQxAXQRIkm00WgIgdKw6mmx7XZbhtBRQXS1e4312A1eU16rWq2GsbExjI2NYXp6Wh7z5je/Gbt378bWrVvR39+PcDgsUSjTh5oM+Dum0KLRqERPBrcOrpUAjgJ4j+M4x8///5sA/IvjOHcv+pleAotFAKVSCfl8XvL5NH40ZnpEBL+kzL/S6LdaLTFKzCXrmgGLdwCEaGgo9biIVqslBVgaz3a7jXA4LAVknTqgAeYEUpIBcGEfriYC7ZnTwJMMWHsALjQk6YIj00/zpYh4HhxloIfS9Raw+d5ZsOV10vlpXnv9Wno3MIu/TM3NzMyIZDMSiUhkQEOnO2hnZ2eFFHWh3O/3o1qtSoMYQSJgExrfG2W7lJHy/TMqIBFc69IafmZ4TU6ePIlnnnkGL7zwghw3mUxix44dGB0dxfr165FMJuUe896wB0LvrvB6vYhGoyIj7VVyGbwxca0E8KTjOHvU/1sAntC/uxFY7FlA1JIz9cKmLpKBlZKGxAAAIABJREFU9hx1cVR/qXQRmdMrgQsGhvl+3TPQm3rSg+RoVJjGsG17XjIgUQHoGp+sx1EzrUWPV8tK6d3yh5EI0K1g0V7kfCkiHRUwpaU96t4RGCQBXbjUkk4NPfqBEQZz8szLs6OXhpqNUpoIGH0wgmMkxtQWU3n1el0IRo/KplKKUYGOvnRjXbValZlIHImhi/1XAxplpv3cbjfy+TzGxsYwPj4u01jdbjfuuece7NmzB3fffTcGBwclKuAwQn3NWajvdOYW1QSDQcTjcQSDQUMEb2BcKwH8FYDbAfwD5moA/w7ASwB+CgCO43x9Uc92ASxmCqharXY10egGq1arJZMa2dzFNIs2DCQDPcGRqRqOLaDny/QEowcek4VTAF1kwMiAhpm1A2q+tbT0SsiA50oy4DFZ4GXkwnoBUxPamPPvvSqi3vET9JJ1EZi5dj34jj88FpfR934me6WkVGrRaNOLn5qaQrlcRrvdRjQahd/vRzQalchAp7i4O4DXga8TDoel4Ms0GgmONaJKpSLEyHPXOxEcZ26RTjabRalUkte61qhAR3gvvPACnn32WRw/flz+Pjg4iF27dmHnzp1YtWoV4vF418gJXkemi/i5ZfosHo+L5NbgjYVrJYAvX+LPjuM4H7qWk7tSLCYBsACoJY3a46Qsk2MEmNfXA9j4RaGnNV8RWactdBGZxV9NBlSKAJcmA3remgyuNDJgbYLpGb10ntGKNmiUS/KcmB7j+9MqJaaIelNWeisWPWoWrueLCkhGOv3TSzq8njTO1WpVIoNcLodsNiuaf6ph+C9llT6fT+5PrVaT68vIxLIsiTLYYEbS1REQPztaicX3RPloPp9HqVSSseJXA5IKr7+eNTU9PY1nnnkGzz//vKTz/H4/7rvvPjz44IO48847kUqlxAHRC3iY1uT5UmkVj8fls2XwxsCylYFeDRZzKTx33LbbbcTjccmr07DzS0EyoOek9fQ0gjoNwvQBC73aIDAy0BJRfjFZnASuLjLQZMAC8qXIAICcPyWP9Mp1npzTNJnmoBqInxcaJd27oJU/jAq0somvqWstWsVEI0/j5vF4xCPt/ZzqVBTfK4mA9RkuuSfRsLmKihjedw6LY0GXtRGSXTQalY1jOioAIO+vVqsJEeo6C8Eu40wmg3K53BVxainw1YJEads2Dhw4gF/84hc4c+aM/H3dunUYHh7Gjh07sGLFCiFAjkLhvaQzQ3KMxWIycoJRhMHNi2uNAO4E8FcAVjiOc49lWW8B8G8dx/njxT/VhbGYG8ForCxrbnAbyYC7brVRoqFnHlgbfSp2+GXXdQNuB6NB1qkijjZgnp/GkdGBTsHoBTSXIgMa797IoNdY8fw0ibF4SIPMPb2MGhgV6CUuwIVcNQ227mqmBFP3FvAcGG30RgX86e2B4OsTvVEBjSBrF+xT4JKYyclJiXY4QoFpokQi0UV2VA/pqABAVwMaowLWbEj+euwE7ymLxySOQqGAqakpaT5kQZ+fq6uRleprxCL+xMQEfvrTn+LQoUNyrEgkgq1bt2Lv3r1Yv349+vv7uwhKR1wkxXa7jVQqhVAoJKOpTZ3g5sS1EsATAD4B4K8dx9ly/neHnSto3lpMLBYBnDx5Uryk/v5+DAwMyJeBoyFo3LVskIaNj2V6hEaOHhX/pfSTBp+eLKeJ6pxssViU9AkA0XlrOWkvGdD4XI4MdGRwJWSgu48ZGdDg6/OiQdO9EDxXPbyMJKo7mnnd+HpMEemCKyMIXnOSDKWtWk+vC9S6aOxyuSQFxzRMJpMR0mWNgMoYpn5CoZA0mHGSKQmBKaJmsyljrkluutaiv1ssdjOtwqhhenoamUxm3hWemmivFHogYLVaxb59+/DMM890rbK8++67MTo6invvvReDg4PSS6HrWXqBkb5OiUSia7+xwc2BayWAMcdxtlmW9bwigP2O49x3Hc51QSzmSkimdqamppDP5+E4DlKpFAYGBkQRwXwtPVZ6RWzionHTM2QsyxIv07IsMSiMKuilMXdMRZEuIpdKpS65JReckAxIJFoquBAZ0OsFIOqQ+ciAee35IgNGHEwR6Ty5Xoiu9f86b83zpIGmOkmniEgaNJD04nXhmHJMerskIoLXoVdKSsPMdZP04Kenp+XYyWQSfr9f/o3H4wAuNNVR5aUniPL6MCoolUoyr4mkyPcAXFD0kAz0Z2BmZgYzMzNdSjI9yuNqJpTqzwWP88orr+BnP/sZXnzxRfl9Op3G9u3bMTIygrVr1yKZTCIYDIraicegw8PrzblD8Xjc1AluElwrAXwXwO8A+JrjOPdblvV+AL/lOM67F/9UF8ZiykApKdQTI8+dOyf52Xg8joGBAUSjUTHq9MYoN9S6eK2yIBkwAqBXpVNAVMswevD5fF0eGD1cylX5Oh6PR8YhkAh0LwCwcGTQSwbBYFDmGukOZD5XkwHPmwaNRVfOJNI9ELzG89ULeBx9znxvvI6dTqert4CGnNdVa/l1rYCP16+ri/b6WFo9NDMzI8abUV8ikUA4HEYikZBr4Pf7ZfxGpVJBq9UStRBTSJ1Op2vjmFYQ6chHDx7kY1qtFnK5HKampsT50LObeB+5KOhy0LUTGuparYaf/exnePbZZ6URzuPxYPPmzRgdHcU999yD/v5+RCIRSUnxc8DjUa0Vj8cRjUaRTCa70kkGyw/XSgDrAfwNgGEAOQAnAfyG4zinFvk8L4nF7gOgl6NDbho/3WgUi8UwMDCAeDze9SXkF4IkwboBvyw8JmsJLAzT46ex1KqiWq0mdQOtTGInMtMZ9IhDoVDXqAIAXV7Z1ZAB9fA6FaEjA54PC788JvPYjFZYK2DEslC9oJcMmPLQXruOonqjAl3Y1kVMXbSkEeU11EVjx3GkKzyfz6NWq0l6iEVjKoe0pJIpKN1ERlIAIPeXOX7Kh3n/e/snqL7RHeblchmTk5PI5/PyPH0P2IB2JX0GvL6aOC3LwpEjR/DUU091rbK87bbbsGPHDuzcuROrV69GPB6XKJA1Hp4370ssFkM0GkUikUD0/HpPg+WFRVEBWZYVBuByHOfqtmsvEhaTAHTjFXBh+xVznzR8juN0kUEwGEQqlUIqlZI0A4eQ6SKyTglRi08DR4PP8Q8AuvTaNGz8t7ejmMen10rDTo9eD27TXcgA5H3xOVoOCswVC0kqJANdWKVhJgnoojbHL7BngRGBnmbZWy/QElWSXa+KiJ47U0Q6ciKZacIkoXNmkM7P68hDF42ZHqJUc2ZmRtJdiUQCgUBA8t960T3HhtfrdSED/qtn8nA9pk67sVYBQHoyGMnQIahWq5iamsLs7Kyk3vS1B+a8+iuZUsooldeUtapMJoOf/exnGB8f71pled9992H37t244447MDg4KIPnWJTn/XMcB+FwGIFAALFYDLFYTCIng+WBa40AVgD4EwArHcd5t2VZGwHsci4xuO16YDEJgJ66zsnr/DoNoE5TAHNf5Hw+LxFAKpWSjkrHcbrqBvSq2+22fEFpwAF0SR85eIxFUQBCAvTagQsePeWUJCsqikgw9IQp9QQuHkmhUyssntKbBSBySV4LreKh8dTSRxpyTQZ6AirJgAZOT1HVenqmHPR10uMneDymfPRMJa2oIfi6vNa9UYF+byQUdg1ztAOL/IFAAMlkUrxe3fcBQJ5LImCqiOfL61KtVrs6xDnnicTM0c50IhiVciS1bkJjHYKRzJWqiHSXMe///v378fTTT2NiYkIe96Y3vQnbt2/Htm3bJCrgZ5JEQOIlOSYSCcTjcaRSKVMwXgZYjBrAlwH8vuM491qW5QHwvOM4mxf/VBfGYhEAPVl6OzQqDG8ByLA4GluSg8vlEqNcLBZluxi9//7+fkSjUflS88uoi69aY05jR8+cKQJ6jvxy8zE0wOzmZBGZEUyn0xEyoAfN19ZkoIvOwIVhbPQyddEXAGKxmBSidRpFR0okJN0bQLKlIdTESBLTnjChyaBXRcRrQE+f0RMNOF9TNz3xmKwtkHR00VhHOZ1OB9VqFbZty5yfQqEg0Q118vF4XLZ4aUUTX7/RaEiqiEP4SFClUklScVRBMTIleO/0e56dncX09LQsxSFhMOKgkOBKNpqRKHktKUE+d+4cnnjiCRw+fFjOJxaL4YEHHsDw8DDWr1+Pvr4+mZqqC8+sE3DuEInA9BMsHYwKSGFiYgKFQgHpdFpa4fnFpqHVjVm6C5TeEr8wNF6NRkNGEdRqNcTjcaTTaSQSCQCQ4iHTJ7FYrCvnTfJhtyaNKo0YDatWvZBcSFZMI+jiJ71Xph/oDTNiAdCl3e+NDAB0ecWWZXVFBiQATUwEIwOeC68BiYUNU8FgsIswiF5S0aorRgU6etO9BYwKelNxJD32Sej3rFVKumis1UOlUkk2hDUaDZmuyRy4HsGtu6OZpioUCiKrJWnYto1isYhqtSr3v9PpSDRDZRHJhVFCoVCQOUhMzXCiLNM9jUZD0k9XAkbFvOa1Wg3PPvssfvrTn3atstywYQN27tyJ+++/HytWrEAymZROeJI1HSbOZEokEqZOsES4VgL4CYBfBfCD8yqgnQD+i+M4exf9TC+BxVwIU6/XMTs7KwVSFrsikQis813B9Bx1Hr43bUEVjfbg2u02JicnUa1WUa1WRSmRTCaFYCqVihilWCwG4MLydurrdacuvVMaOgBixJla4BeWxU6do2c+We8apvHVxWgaQYIkNB8ZABBPmIXC3iiFoEGkUoZKIsoeaSj0pFKSa6+kVKctAMgoC90RTJWULoCTDDThuVxz8394r3ku2pDpbmp2GnPoGyXErHckk0nE43EZf8H3rPsD+N71SlJen3w+L5Ej7yPPmcqxSCQCv98vfSj1eh0TExNCVIwIGBXwuZyCe6UgcTMaPX78OJ588kkcPXpUnIf+/n5s27YNu3btwrp165BKpbo+f8CFkePsSYnH40gkEkilUpKWM7i+uFYCuB/AfwOwCcARAP0A3u84zsHFPtFLYTH7ADgMDpgzcmzo4fwYdoeGQiHU63UJlXtTRfS8bNuWfD+9THpd09PT4vkFg0Gk02nZ7mTbcwvNtaKIhTot9yPRaM+02WzKikk9tI4pKn3eNGh8DLt9merhMDamk7Ssleglg3a7jWq12pUmuhoy0J3CJAN64uxZ0A1iNO6MvnR0QU+ZRpbnS89ZK5p0NMbz4WN1VMB7ychDzx+i1829wYVCQdJTWhETi8UkNUNCJimx+YsFXhp6ng93DPQq1Pj/Pp8P0Wi0a8jf1NSUNKzxc8FGQBrzfD4vi3OuBIz0SCbFYhFPP/00fvGLX0hty+v14t5778XOnTuxceNGrFy5EtFoVOpcJH6ek9frRTweF8fIyEivL66VAAKY6wP4JQAlAD8H8N8cx7ny7pRFwGIRwOTkJEqlkjQz8ctBY0NJn859UmtOT5zFWD1/neka27a7vGo2PjmOg2w2K0Vkj8cj81lYH9BL6nXOnd6e7q6lUWC9ge9Dd8rS8NFoM5rhF05LCumZMhdMo0US0fLS3jQRoxp+4TlZkl40yUB71DTcNLJMpfXKSkkGOjWjyYCpFF1A1oVjRg8c5scIhEaYOWytuY9EIgtGBbrTmNEQUy005gBE1cOCqE4PMYJhLwVrQ9w2xvfOyI37j7Vclp8BpjF5vFarhUwm01UQJrmTeKleKhQKEsVcDrzGuifg0KFDeOqpp3D69Gl53OrVq7Ft2zZs374dq1atwsDAQFf0qj+LHN+dTqeRTqdNneA64VoJ4B8AFAF89fyv/kcAScdx/t2inuVlsJgRQKPRkFw0xzx4PHNDsLRUUEcHzMUyBPf5fF2D4rS3rBu9mMOn50rvs1AoIJvNiieYTqdlRg2NOkmIBTWqXZhj1Rp6/o4GjV92epRag06S4nvShVDWDThdkkVbnTqhoQUuJoNOpyOD09gwRDJYs3IlSufXcfIYPDdGOLZtIxWP48Vjx8TwAZCUFRU9unjMY7CRjj+MMPhYRnA0NDpFxEiM56ZrBUxD8T5rKSmjMXrx+XxeCse8dxw+R0lp7whp3j+SQS6X6yrC81oX///23j020vRK73veKhaLZBVZF97Z3WTP9MxoLtJKmmlqJGg3Wmu9XkWBtVh7BWnjWDteCMLGcDZBYCBxFms7CYw4MGAkXgPZJPYidq6bOIF3ba+ziGIvsmr19MxII2lGlxn19LC7STbJurCKVbwVq+rLH8Xf4Vs17G6qr+zme4DBkM26fN9X9Z3Lc57znI0NbWxsdGlMcZ2Bmwi629vbtgwH4kEikbDgRpKSSCRsfwGf+a3Mz+gJUqurq/qTP/kTfetb37LKd2hoSC+++KI++clP6plnntHU1JQGBwe1s7NjAZ0KEV2m0dFR5fN5m60Jdm/sbgPAd6Mo+ujt/u1+273sAfjDTmTJ0Pb4YsOHxykAywCd4LTJwHxYQZJVFNzgZLAs5KCJLMmkCYAxoBlCucMhU6lkMhm7+ak8OG4fMsFBIU0Bo4lAJB2sPyQo8B4wncDOJXU1bX0c/ajB4OWXX9b1rS0l2m01YzG14vHOf7GY2rGYXNTZF3yu2dSNGzcMXtvd3e2ilQ4ODhrTRDrg9PsQUe8gHfAPj+V8uGb83R8U9PshvB/Byg80PjzE8BfMIf/8Udgk0BOMgLKYA+GzI6AAW3E+Ozs7qlarFuxp8lPtwHiCmsxx+DImDAASMKg2y+WyqtXqkYbM+Oy5Vjs7O/rWt76lCxcuaHV11R73zDPP6Pz58zp//rzOnDmjXC5n94v/GQ4ODlpTnaogzBPcvd1tAPgfJP1OFEWv7v/+sqRfjaLoL9/lQX1O0n8tKS7pH0RR9Ldv9fh7FQAYrKHsn5qaModAQGCYx+fQ0yD2sy/G/pvNptEBfagIyIAvOVk4TsNnbPgY+9ramskVACPw+mSrOIxsNtvlMHxGEAGI5rTfN4BeSE9AkjkZskXfydXrdaueeP3etYI4Wz+r9YPBRz7yEf3r/n7Foki5Wk0D29vqb7U+EAyejsX0zjvv2LUHOvGlGICb/GCAE+a8fdol50OV5A+a0Tgl0PN3vgO9dFK+CzyfKs9vRqMZtL29bfuD2RvMkppMJmO7jYGIcKr+xHC73TZ4iCSF46nX66pUKhasCJIcVzqdtnOied0bCGgY8z0kyJRKpSMNmfn9IoLkwsKCvvGNb+itt96yYJLNZnX+/Hm9/PLLmpub0+zsrH3vUU3lvoFtNjU1pdHR0a4KO9hPZncUAJxzb6mzASwh6UOSru3/PifpB9FdqIE65+KS3pX085IWJb0u6VeiKPrBzZ5zL/cBcJM0Gg2VSiWDUvL5vN2EOH/Ke3jhwAL+OkBJqlQqlq329/drZGREiURnkbjvWIFufBiDm5EvuZ8JFgoFkxVgEIk1fuD3fI5o3JP5QRv0nTSOZWdnxzaL4SR8jJtrREXgZ9PAClwbKiY/a/adAv2KmZkZXXVObUm1VEq7iYRi0geCwXg8rqWlJXN+mN+XoIFN/4IM26eD4oy5PkBiVAjAN35vgqwcZ8Tf2QQGS4kgShCnQdtLJfUX75TLZaN8+nAUgQCoDYfMZ+arhZLR+9RcltvQjPYZUK1Wq2tOgCBSKBTsvOn78D1IJpNdhAaW2vgzCjczEgbuo42NDV26dEnf/OY3u1ZZvvDCC5qfn9fHP/5xzczMKJPJ2DXmfWE9DQwMaGJiQvl83hr1wY5udxoA5m71olEUXb3V329zQJ+S9DejKPqF/d//2v5r/hc3e869ngT2YQOcZqlUMiw9lUopl8vZ83AmPgxEcxHZgd5mpl8d0PTqHXwic5RkDWaohb1wTblcNlmKWCzW1Tdotzu7iXmt4eFhc1ZgwDh5IBEc7M7OjmHrUCgpvalKepuhPiefYEAF4gcDn16aTqdV3c/29+Jxaf9cq8PDavT1WTA4s98QJUvnOH02kM+s4RhYyB6LxQxXhnnjBwN/toLg5ovS+e/hy3hQZfEdIdD4FaI/pOZXBcBLBPONjQ2Vy2U7HioZfyMX7881hPIKE4yBLyigVF/0CsjoCfpUokNDQ/Yd5fu0u7vb1WfhfX1YjWrDJyvczIAc/Z7a22+/rQsXLujdd9+1x01OTmp+fl7z8/Oam5vTzMyMVXf+5Dq7nsfGxmzGJvQJjmZ3BQHdD3MdRdHPRVH01f3f/6Kkl6Mo+is9j/uapK9J0uzs7Es+2+BOjczIv9HJUPffU5JMfE3qZCxUB9x8PAYNGRg44MpkzFEU2TJysmWcE44Hh0zm5U8cM2/ADUxjsFKpqFwuWznPZCZzBUwo+0EKKAAWiaQuqQccHQ7S3wjGfATXyueJA7XgIKmYJFm11N/fr6mpKa212+pn4joeVzsW0148Liep5Zw20mn9bF+fvv71r5vMBtAXQcB3gn4w4LqR5XKcVGNk5pLMgfE5+QEBJ+9DPD4TiQQC1pTPIMKBSjq0KqCX5FcF4PlcL7Jxjps5A/99qBBjsZgFFIIguPz29rZBPj4sJx1UQ5JMFRUKKZUrhAeCKlANQ21oJ93O6EtwDugPvfbaa/b8ZDKpj370o5qfn9fzzz+vubk5JRIJq579Ko7v+dTUVJCbOIIdxwDwRUm/0BMAPhFF0b93s+fcqwrAN79piVP3y3dutlarZdUBuClTvmQorVbLyn0y+Xi8Ix3tSy9sbm52wVDMHKRSqS5WEY4VPJiyHsfrZ/GU9DBeqAxg3/gbvjgmv2/AaxNo+JvPJ3fuYFEKVQkOhUzY334lqUs22TmnT33qU/rB7q76Wy3FokixVkt9+9e9uR8MmrGY5mIxXblypauBikQzzfPeYOAHO3/GgOlsmuQsQMEh8vlxTQkGQHY4e4zASFbvU0p92ixVCNeWIEn/R1KXeBz4PJk7NNKhoSFb3O7rKfEeNIA5n62tLUsMSC5isZgtxOFaEYz85T31el3lctnOh1kYpncJBtvb21ZdNRoNlctlU6q9nfE8kpk333xTFy9e1LVr1+wxZ8+e1fz8vM6fP6+5uTmNjY2Z9AXm9ocoBwYGNDMzo9HR0a5J+WAHdhwDwEODgG5lvZBDb9YEPFOv182pwef3oaRYLNalMMmNxk3sDxfB1242m8aLxtH6EBVffh/bltTldKhIVldXDTceHBzUyMiIjeQDl2C5XM6cwvY+RRNGBpkfwWp3d9cUTP1JZL/JTKDD8ZBVb21t6emnn9algQG1+vo0uLOjwZ0dJVotxdttuShSX7MpJykTjxtGzbHRhL5ZMPClIfjs6AdE+7RaXoPPY2RkpGtmorffQODG0fmNY5yYX/n0VgV8Z3yZakgBfp8Ch1ur1bS5uWn8fEmWHICFwx7ylwRx/DTcceb0BYBsSAZgBPF9IrFhPmR7e9uGxTgfv7okISA4+tLf9DluZwRaAtDCwoK++c1v6s0337TzSKfTevHFFzU/P6+nn35a586d65qJIbjSVJ+amrJKOMBDB3YcA0CfOk3gn5O0pE4T+N+Oouj7N3vOgwgAvpEF+4Jn0gH3my9fu922lXuxWMx05LkpCSKwQnyIhUlRnAX0O59DD0PFlwfohWX8vgHYKRn62tqa3aj0IYaGhjQyMmLNTRwf7yd1ICSCAZkVMIBzrmunAn0D3xHxOIIBgbLabGormdRuf782Bwa0l0go2WhoYHdXyUZDiVZL4+oor/qNcq67Hwzi8bhyuZz1YHgMjvqwYEAGy7wDf/OZRH4wIAj4k8ewhPieUBVIMmcO5s9nTWKA5DNZOwGmFx6Cx0+CEI/HDRIiK2fGwFc7BQbzv6MMqjFkRzLBtLGkrgBCs7vRaHQpokodp5zNZtVqtUxcj/4IjV/nnMrlslUTtzN/s1ytVtMbb7yhCxcuqFgsSuoE0Q996EOan5/Xxz72Mc3NzWlkZMSqAr53zOnk83lNT093fZ9Psh27ACBJzrnPS/qv1KGB/m4URX/rVo9/0AGg1/xhHZyDD//wJWSHrNTJInO5nGGtPM/XjudxNE59ZcqNjQ27gbnhU6mUNaD50ksHFFOOycee+fdisWh8ejJphpR6m8hot0gynBanwuv2Cpf5w0hkyf5U7jPPPKMr7bb6mk3JOQ00GtpOJLQzMKDtZFLbyaQGGg29tLOjy5cvG1TDewL58F/vnAFLzP3KgABC8ACLpkHLpC2vQX+G2QgfIiLr9GUqfIgI5pM/wU1VQMaLURFKH6wK/CljaKQbGxuq1WoWABD1I3jRf/KvPfBmFHWkLoAfoaXitLe2trS+vt51bTH6L7Vaza411WoulzMHPDAw0NUcJrun0YyY3K0MmBEyxY9//GN985vf1Ntvv233Tj6ft6bxk08+qdnZWQsEBHtJ1kw/deqUCfWdVDuWAeAntYcdAHzzqwOyRd8h+g6HGyuRSFi2ymtE+xzoZrNpTVuyTLI9sGgGgvxGci9llYzSf23poAlHlswNTfOx3W7bxC6wCCymKIqsMenTJnkPX9XS7xvAq+d58XhcT87Nqb6vPcR1IgtvNBrmNPKZjP7wj/7IoA5YKf65+EGAoEyzva+vzyoxIKrDKgOCAX0Xdv9SvfjN+t7mMdAb588Qnx+A/b9RFVA5cQ2oCvz38HsF9JV89tDGxoZde3BwkoO+vj5jEd2sKoDNxneAPlAUHUhJ+9eWRjvnyPem1WrZPAPBDyox3xV6Ga1WZ2/FysrKkdRJIQ7E43GVSiVdunRJly5dMnipr69PH/7whzU/P6+PfOQjOnfu3AcCPRTndDqtmZmZE0sjDQHgPhtfOl9/RjroKVCK46Ccc0qlUhodHZV04FTIKGmc+hRDP7vDUeFwqTLIanGQvTtnsV7KKo1DoBvEzMgskcOgpwDtFGhLkjkDzt/H5ukXwDOH/eQreeL8cWxk5zRy4/F412IZ6SDj9mmi/LexsWEQzM2CgR/AfXmGvb09w9C5ngQDAq7fePbnCwhm/hwetNUvAAAgAElEQVQFr02fBKcOfITzJavnu8Prck5UBFQDzBT09/eblg6BB9ok5wQExXeG7wHVaLlcNnE/ejZUi1ShVH7OuS5F02azaRRWHKx/3ARUAtPe3p6Wl5dVLpePdH+RlDQaDb311lu6ePGiLl++bH+fmZnR/Py8XnrpJT3xxBOanp62ncdYMplUOp3WxMSEpqenT5TcRAgAD9gIBL6ksR8M/EwKBzE2NmbsEjBaHockA/ACNzbvRe+g0Wh0wQF+SexPskIhlLqnd2GOFItFa3pCRyTb9CUZoFjyWkyNNptNCwZkn1L35jMqIfoEUBAJED6jiJ7D3t6eZb/+eXIeBMDDKgMa1FRhfvO6t5oD0+8NBkh5+MqpPpOIawkNGHjMrzjI/gkE/N+HiEgQqArIwCV1BQK/YcymMKQmeD2+K71Lgfh+cY05VmSu+Y5w/WAQ8e8QExjG47tDtZjP57v6Qv5kOAKIsVhM6+vrWl5ePpIOEdIVUmevx8WLF/Wtb33LnjswMKCPf/zjOn/+vJ599llrGnMMHA8svrm5OZvEfpwtBICHaGTD/jCS1F0dcONJBzgoQ2g48F6OPVAI7BCyPGQSGP7JZDJdnG+MG4mqA4wb+AGHWywWjUbJsFIymVQmkzEpZ46TSWRJhgfjNKWD4ANLiuzUx9R9BhVO1d+ZnEgkjEa7sbFh9FNf9hiH6TfwcfI0NHuDgQ9h8Rx6LP7AGbRSsl7mHKSDzWpAcVRlBBI+EzJ/Kh5mRGDm+PANmD8Vh18VACmRjVerVYPukB7ne8I8Bb0dHx4ChsSpI4NRKpWspxWLdZRJ+d0fSqOS4Lu5vb1trLOxsbGuORE/MCP5QMP52rVr1vi9nTFcWa/X9e1vf1sXL17U0tKS/f3JJ5+0pvETTzxhQ5j0z6IoMr2t06dPK5/PW/X1uFkIAMfIepuY3Nh+BspNzTzAxMSEMX8kfcBp+HABcJHUce7r6+vmfLjZyK55Lb9awAlJB9ILNP7ge3Pz+sFAkv0NuIfjQOsfBwY11JedwLnTN6AfQmbJsXKeHDfXoVarmewFUIo/uezDc/xMZRWPxzU6OmqsFr8y8LWMfL0eaKUEQAanfEE+sn4yf4KwTyn1h+4I8shc8DfpIDHgXOg/cP38QFCv1w0eGhgY0Pj4eBdDjPkCH1bEKZLhU8FQARUKBesjUHX6wohcR58BhbQDjpb9DL4QoX9M6FQVCgWtrq4eSYfIhwSvXLmiCxcu6Hvf+57BXCMjI3rppZf04osv6tlnn7VJY79vxkL7qakpk2h/nOChEACOqfn0Rr8i8Id7gIoou3O5nNLptKQD+ISGG0tKKHXZ5YvDpLQnA/blInxWkc/g6c1ogbaQGiZbZmAJNhMsExpx9AF6KZRALT4uTwYryWYiyBI5JpwUzdTBwUH7O47ZrwxwdFBqcRAEg0qlYnj/6OioQRRUBP70OMdNwIJWSjOVysCXggAO43mHQUT+a+LUfYolVR4DWpK6qoJms2mY/sbGhq2xhD2EjhTfM+YTONabVQWwqlAhpV8EHMVnTdVHkKBHtL29rVars0uZfgyJhd+74ZjYb1Cv17W6uqpisdgFXR1mfgVaLpf1+uuv69KlS10U7Weffdaaxk888UQXdZjzTKfTGh8f1+nTp5XJZB6LKeMQAB4R48bh5vHxUyoFVlkCfUxOTlr2BvwBVMSN6Y/2k6Fy4xJ4wEJ9qIimHw6BY5JkMAIYcLVatWNlYAl5X2Ap/pbJZOwcaIYCFQFZ4Ex2d3ctM6SJTJO7dxqZSmZwcNAcFrIQZNk+ZANMREDi2hMM+vr6NDY2ZtUETtGvJtrttkFYsKfAxKmSgJl6GUg+04XA7DeO+ayAxMCzmdjmZ84D6AtYD70fKgJ6Rel02r430kF14SuDchwEZkn2PaNBj1Ah16RWq3VRnH1GHFpRJAswzgjcfi+Ga+kvAyqXy1pZWTFBuVsZzLFGo6F33nlHFy5c6FplOTY2pvn5eb344os6d+6cpqamrNIkoUin08rlcpqdnVU+n3+kp4xDAHhEzR+C8sf9+XfKfbIXvzrA4QAr7OzsWCYIswjMHKcHnIDj8nVugF/8IIORiQNDwHbC4dNEzmQy5hzJZDOZjDkbMsW9vT3LwBOJhJ0j8thQUzkWSTbDgGNE+whnCcOFATcfKvKZRzBWcGowoAgGXDNfJM8P0P7AGRPjNPCphKgs/MyTz4Vr67OjCBZ+VQDFkmDozxUAHXKcBEL0e+hjwIph5ag/FEcl50Ml/veQf4NOWiqV7Lh2d3cNXgPKxMH7DCmuSS6Xs8+B7wCJB98Bpo+BNRcWFrrmFQ6zePxgd8aNGzd06dIlvfHGGzb8lkgk9FM/9VM6f/68nnvuOZ09e9buO0lWMWazWZ05c0bj4+OPJI00BIDHwHrhIp/rT1bJzAGZ4MzMTBe+Szbpzx2QaVIBRFHUVdZDC/Vpjty83KA4LIIFm5+2trZs0TnOmIE2mnI+zgst1p9DQIAMJwnmThMZ2AAMva+vz5aySJ2qyqcm+hUSjff+/n4TYMN5cp39zL+3MugNBv60sqQuCiaZOHAO1ZF00Dz2B8mAJ3wYzm/mI+mBs6JXQHBjGA3YyYeHaBYDEUEjZcKXzxVGD5PGh1UFnF+73RnKK5fLqtVqBv/QdKcK9EkHvhAcA4n0CeiD8J70rehbMHh2+fLlI1UFVH6bm5v6/ve/rwsXLmhhYcH+fvr0ac3Pz+ujH/2onnzySQ0PD1vQIkhnMhlNTU1penpa2Wz2kZkyDgHgMTQ/q8Lh+BlatVq1bNc5p8nJScuywPvJcnEKNDjhc3NjI4TXaDS6ZhIwv1npMy0kGRyDvgw3Ndg8N39fX5/RYqMoMvYSjgIH62PoOBSydsr0VCqlZrPZJRXNNWOGgWMmGABhUf34QUOSTU/3BoNEImEDRn4w8CeQpQNtoVar9QFaKU1Zv1/gQ0T0BDhP2DoMZ/lVQW+vwM+ceS3kJvzBMui1+XxeU1NTVtUQ0AkGvLYkO1+OV5L1RCqVikqlkh2f3zT3Kz1gQD6/vr4+ZbNZC2IEEs7bnwEhkWi327p27ZqWlpZuKz0BdbnVaunq1at69dVX9eabbxpVeWhoyKikzzzzjKanpyXJxP7a7c4Ky3w+r9nZWY2NjR17GmkIAI+5+dUBgYEGMo5+ZWXFvqg0uvxgAATTbDa1vr7e5aRphvnDbEzconiJAyBT5WcW00gy2iM6Nz4U1MtZRwyt1ToQ+6Li4Xm8pg93kWFCnWQegYza1ziisuBcabjCnMIBM+tAQOoNBuvr6xY8YBPxd/7zKcA4YoIBVRAT3kAyVHbMFtCgJ/Dh1H2NIp9C64vFkVkT/GjsMmwHwwv56FQqpdOnT3fJhSOVQRMX6x0w83sL9XpdxWLRvjfAhJubm9Y49yUrqBSBKflO8F0iENDU52f2YqysrOjatWvW/L2VAXWVy2VTJV1ZWbG/P/3005qfn9cLL7ygJ598UkNDQ3YMPB8a6fT09LGlkYYAcMLMpyH6NxbYK8vocWjT09PWGPU1bnAQtVrNhnBo3FERMCBEdeA3knE8sIr8G5gbF8YKsA1NSJg72WzWKJ7AM0AVYPu+4wBGIevf2trqCgbQDumhSDKoBPqpf34+nZKAx7HjdKGO+sGgv7/fuOWHBQPpgAXF3+npMBuBHAiVng8R+cNbvY1jH+6hEuIzYcjOZ30BDfqBgF5OIpHQzMyMstms0XVbrZZVLfRqOAbpoHeFEWwQiAMa8pvU9EqodDguf08w1Q2P4TpIsp7I8PCwxsbGrGm8uLh42yEzqoJGo6Ef//jHunjxor7//e9bZZ3JZHT+/Hl9/OMf17lz5zQ+Pm4JB5VLOp3W6dOnNTk5qVwud6xopCEAnHDzewf+dC4j/oVCwRw35S0wA1kdmDz7Z8Fhc7mcZbdM3PrVAa9DlYATY7YARzQwMGC4fK1WM8dF1kmTG1ohmSxy1s45k+jGGZA5k2GzVhNYA6fo9xy46YFkCApIUtTrdes9+Bo4wDSHVQaHBQN/FaUvKQGswoIXGqDMWviUSV++wp8toKIiEFIVwFjyAzByIZyHL7/B9i96Jfl83thDBCWqFhIE36fgJCXZe8ZiMdXrdZVKJZO/JuDQoAaW49rxeeCogfoIwAQ+fuezyWazarfbKhaLWlhYOHJVkEwmVSqV9Nprr+nVV1+1ajQej+v555/X/Py8PvShD2lmZsbYRnxXh4aGNDk5qZmZGU1NTR2LPkEIAMHM/MYxN6cky5JKpZLx2fv6+nTq1CmDGDCyTpqI4LKTk5PmVNGsIcjk83lJsmYeDghMmelmmDStVmfrFBOmkoz/7sMyNADb7bZNnVJtUPUQCIaGhmyHMucI+wa2EE1tcOe9vT3DmTlPWFWVSsWCATo3DH7hFHxYCbZOPp+3SodgQNMaSivQFENunIe/oMVvHqNg6g9zAVvhmP1gwDUhYHAePhxGFYGUNHLSZLtAVQRNptIJdECLUndVAOzHjAvqpFRb/IzsCOdIQ5uhMZ+yyjEQ4PmOI1+dTCa1vr6u1dVVLS4udrHYDjP0nxqNht5++229+uqrh66y/MhHPqLZ2VlLRPgujoyMaHh4WLOzs5qamnqo8FAIAMFuan7jkSYj2eTOzo4KhYJlphMTEzYlyQ2OY2m321pbW7NMLJvNGt8f2AlWiy9Sxmv5ap+bm5tdEIVzzsTPcJQ4baCigYEBExdrtVoaHR3t0lSCZ49DhKkE/uxDSL6OEdAM1wXnCxxBsKCBHYvFTKGTIEdFROAslUoW6KBA+jCRj/ETVCQZXEbmTTCgksCx+iyi3oljqjpf6A3n5MNIfBZ8Hr3wEL2d2dlZ2y3BteZzQc/Ip5L6cxc+1ZNtZCiUQltF54iKVZJVMSh9EgA5T+mA8UWi4y9GarVaKhQKR5aeoOeB/tAbb7xhDKb+/n5bZXnu3DnrAXGOQHmzs7OanJx8KLuMQwAIdiTzm8lkdrBG2u22CoWCLZBnFR8ZJP9HxbRcLhumH4vFjE1B1k7WywQnzk46kEOGUeJTE6GClstlc5RkgjjnTCajUqlk3PVMJmPZe7PZtJkBSvZePB1RPfoGVCzR/jQ17KJUKtVVRdAcL5fLdj3IVqmo2HFLj4XhrFsFAz4XX8OHATya2cwY+MEAJg3Bi2BM8JJkODzXA+aNr3AqqUuWY2Njw5bJ00cZHx/X+Pi4BRgqIOZN/EEqriVO0p8zoeKpVCq2xnJjY8OCD+8nqQt2oUdAteOrrMKWIkAylzI4OKhSqaQbN25oZWXltr0C3qvZbOqNN97QpUuXdP36dfv73Nyc5ufn9eyzz2p2dtaopCQGw8PDmpqa0szMTNcg3v22EACC3ZH5zBoyPPDwarVqWW9/f7/RTMnqqSrAc4FLnHMmB0A2iKgbapLSQZZHdQDTxN9o1d/fr93dXWtqI9AmyZxuNps1KAoHkM/n7XfmIXD2BBrWY25ublow8GmQsVjMJDqAbfyhMqAdf6MXU9AcO+fCY28VDDh3Pgt/ST1DflwrmsdIV0iyWQkfIiIoUS3QiCWo8BiCAdeG5vv29rZKpZL9vLu7q3Q6rbm5OYPxeD0qAs7Jp5L6QUuSvRd9iGq1qmKxqM3NTVUqFdtS5vsvzo9ZApwrFREEAnoE7XZbQ0NDJppHkLl+/bqKxaJu5xupPK5fv64LFy50rbJMpVJ68cUX9dJLL+nMmTO2r5gKJpVKKZfLaW5uTlNTU5ac3C8LASDYPbFeyQR/qKpYLBq2PDw8bBkODs5v0pbL5S5O/+TkpOG8OEzE0Jhs7uvrMxjDhya4mXF4lUrFsGvgKioEoArKd6nT2PSbyFQ+OPtkMmnMnK2tLXt/v2+AKqU/lEffwN8DQE8DDj+KrwQDcHGy4KPARAQDjEYqxw4jhePy+wV+VeAP+jEx7TeHCWx+VdALD7GnAmbU3NycfX7Afz6G39s05jvmB4dEImEwXKlUsjWZ/J/5DQw218jISBeU54vG4YghKPAdYUVruVzW4uKiBZ1bmT/4+Nprr+nSpUsqFAr2t2eeeUbz8/N66qmnNDEx0aXFFI/Hlc1mjUZ6v9hDIQAEu+dG5gtk4vcDWGGIszh16lTXVCyQBFlnpVKxjHNyctKyfxrJZMjZbLbLEeGcgIU4Bm4uBs92dna6Bsh6h8+kjlMYGxuTpK4mMkENh88gmw8/+X0D4CGCTKPR0MjIiAUDqeMMGb7iGjEFTZZKAxnIhaDEGs/DgoE/xYwUxfb2tg2EIbtB09RnEfVOHDP3gUPn8ThMX7qCoNFoHOwQprKTpKmpKY2Pj1uTH+jPX20JDCd1VwX8G4GXHQgEg0KhYFWBT2qQZAKFBCGqOIb9fGFBfue7MTo6au+xvLysQqFw26qAyfDLly/rG9/4hn74wx/a8edyOZOnnpqaUj6f7xqeGxkZ0fj4uObm5u75cFkIAMHuu0FP9MfnYZ0UCgWDScbHxy3T8XcA1Gq1rkayJKPUkRWWSqWuQS9/GYzPZCGL5vWTyaThyb7mjXQgEZBKpT7QNwBKAK/3GUWDg4Pm9IA6aKb6onXoCfE6VCUEORqy5XLZqhyCAXLXVAZUEfDjs9nsB9hEfs+AxijvwWvBq/cF7YBQfNjPrwqQc/CvH0HBb+KD/29ublofiMb1yMiIzp49q1gs1jU1zZ4CH0IkUfDhRx+SQkakUCioVCppdXVV5XLZehO+MR+AyihsLGZKYEZRNfF+LLahwmGLmd+HOMy4PvV6XRcuXNAbb7zRtcryhRde0Pz8vE6dOqWxsTGDJKlecrmczp49e8/YQ8cqADjnvijpb0p6TtInoig6klcPAeDRMRp8ZJqU3ChIQvlMJpM6deqUMU/8pjNTx9vb21YdTE9Pm/OoVqvm9JB44MYGYuGxtVrNcO7BwUFTL+UYucmglo6MjKhSqVhWDatHUtfQFI4cZglZ/9bWlh0PWDEBgeXozCqQSXN8W1tbKpVK5ghZvA5k4wcDHCsLhPyVlv5SIK4L8BYZOhO0voicJGuME8z9xjGUXSok/p2qgGBMpk//x58gTyQSmp2dtcE8ggYOkODuwyEEDCoY6WBxDjMEq6urWl1dVaFQMEZRr+XzeaPs8n2jUZ1IJLSxsWFVHX0ISATpdNoCTbFYPFKvgCQFKul7771nf5uentb8/Lw+/OEPG8POZ8dlMhl95jOfsb7WndpxCwDPSWpL+m8l/dUQAB5/wwn5cBEwyOrqqsEIk5OTyufzhg0DAfgsJKCfbDZrDtuvDnC+kqwiwEn19fWpVqtZZolTRW8eZxpFkWXqw8PDhnNHUWSNXOASH/sfHBy090RyYnNz0yAbJA4QrQPawRlznAwXsasXGAE+OxnwYT0DMsibBQMavDRnOQboijSKexvbBA+qAiAqmEjSgUQ48AU9EprXOGXmKKAWwx6SZNUWU8b+tK+krqoA/+VXBdvb21pZWVGhUNDi4qJKpZINcvkGlEZyQQVJY3hzc9N6TgQZXxqlXq9rfX3dJKoPCza9Njg4qGKxqG984xv6zne+07XK8mMf+5jOnz9vFTJw5xe+8AVls9k7vfW4ZscnANibO/fHCgHgRJrPLGLit16v68aNGzaANTw8rLm5ua5GciKRsEZysVg0SqpzTqdPnzbYwhchg7onyfjx/Nc7jczr0p8AXuH/OEMag7FYzBq58Xi8S/ESrLm/v1+1Wq2riUymDG2TJrK/q9kPGmTIQCo0mVFWBb5gdoPNbAQDAgvBoHepDlAMTowg5+8w8LWECAZcT2C53iEzXh+mGO/L3mECQbPZ2SF99uzZrqlqqKT+gp3DvkuSjG7p9wrq9boWFhaM5gnLyjcCny8SCCQInx89KmZQgPsIFmtra1pZWdH6+rr1TG5lVDbf/e53denSpa5Vlk888YRNGmcyGb3yyisGCd6pPbIBwDn3NUlfk6TZ2dmXrl69+oCOLtiDMh8ugmXUarWs1Gay94knnuji7NNQRFVzZWXFmnC+VDOKl2Ta0EwRV6PBi2OHWtnX12cb1Ag0BAAy+YGBAa2vr1sAYdoZSQUyX1/CmCYyQYa9BUhRE5g2Nzct8/bZTDSmcTawUHzqp+/sOfd0Oq1MJtNVGcDrx3ny3mT2/mv7g39g9QQCHDzXzpfjBsohUMCKQmcKHSjeF1gwlUp1zWdIsgEzPjfff3Gt+P74Q29bW1taXl7W9evXTSiuNxA455TP501ygvOhmqRqAjryZShosEMlXVtbs+nm21l/f78WFxd18eJFvfXWW3YOw8PDeumll/Rbv/Vb+uxnP3vH99f+uT3YAOCc+7qkqUP+9JtRFP3+/mP+WKECCNZjlPbMBdBMvnbtmv0Odc6fOQB2kaTV1VVJMpbL5OSk3fA0emHHgO3jVMBsgXCoDBi88qmMCOA511m/Cb5PT8JvSvv6RTSRybwRb6N57K/8bLfbXU1kn57K9cLZgNX7MBoYOwqcZNvASQQD+hqcbzwet4y+Xq9/YKiNyolBOSbKfXkPAgmBDTgFiIiKLooira+vG+PLh4cmJiYsEBCsqApoXPtNY5+dxmOpQiAkLCws6Nq1a0Zd7TUEDwcHB+170d/fb5Ug+woIiHxfqSYkqVgsamVlRbVazeYkbmetVkuvv/66Xn/9ddMtisfj+u53v6sXXnjhDu4m8T16NCsA30IAOHnm38zARVEUaWlpSZVKxeChubk5Y/PAUiGjZFAMZ4xeERg8j9vZ2dHw8LBl+D5tlCoDY8CLoJLL5bS5uWk3/8jIiGHywAc4dfTteS6UREnWRK7X610DbThUScYCguXjN5Fp8NI3YFcBwYCqCb4+1QVN7t5gQDXhz3sQOKkmaM76S3kkmUP0X5NJaz4LqoL+/n6rjPyKgKCWzWY1OTlp14SZAp9K6usnSQeyEwQmv5HNBPaVK1d07do1ra6uHrpUBpgHiW6CDRTi4eFh60/RM9nc3FQymbRgub6+rnK5bOJ3Ozs7R9pZcOXKFV28eFFRFOkHP/jBXc0HhAAQ7LEwv/lHNbC1tWXrAaMo0tjYmKanpw2vJqMl01xbW5Mku4H9QalisWgO2p/+9fnyZOtMs7ZaLYMU2u22crlcV2UAhu9rx/hrMFHfxGECc1GB+OqjDDPBXkEkzqcQUmEwB8BQUjwet922vPftggGB0Q8GkmzOYXd31/oF/kIgghYO2KeTsinO12XiumBMFSP9ANtraGjINpf5+kgEO5g8VBrSB2UnqAp432q1qqWlJS0sLGhxcdFWgPrmy03w3r50OIGfaWy+n1IngKfTae3t7alQKKhYLHY1wnuhqF575ZVXNDc39xPfK74dqwDgnPslSb8taVxSRdJ3oij6hds9LwSAYL3GTQ1OHIvFtLy8bIygZDKpp556qmt3LgJuPnSCw0O+N5FIqFgsmuN2zimVSpl8ANmmJKO0wnRCkG53d9fYQvQbUArd2Ngwiuro6KhBQzhVHBp0RV/BFLwdZVDwaBatSAdLdGhCM6C3trZmwQIWDNZut7uCwfDwsEkvMyjmBwOyd19hFCycTNzvbfAevYGUfQ78O6/L9YiiyGik/oxJPp/X6OiokQAYVoPBxbn36u2QFPA6/l6H5eVlLSws6OrVq6ZM2mvQQcfHx7voy7CWyPo5f4IBz0smkyoWi1pdXbXlOwRxgoZvX/ziF/X888/f1X1yrALAnVoIAMFuZX4TECe6tbWlK1euWI9gcnJSk5OTSiQSVhlIMi2iYrFomWomkzG9f7ZXAUP5C+f9ZjJCeMAi8O1hFJG943iHhoasiSx1oCSgEZwjzCYokcxI+OwUeg7cz9A7qVBobEJ53NnZMemOKIpsSEqSBTN/W9fNggGsJc6XrDaKIst8CbxUKL4MA0ERmem9vT2rdCQZrEXjG6fsTz+PjIxodHTUKMGSrGnsVwUEJR9K6a0KYEQVi0Vdu3ZNV65cMYpnb6bO9G4ul7N+D3AZkJ9PBCDIIG+SSqVsLmZtbc0YaQQEzuVXfuVX9Mwzz9zVvRECQLATZz7+y43+/vvvq1qtGo/9qaeeso1WPh2z1WppfX3dGr79/f0mZSDJGnQ09sDC6UNAeSRjxznivMHQ0SuCpbOxsWGQBdr6SD4wKU0DlEYkzmJzc9OGz4CR/L4BAdKXwiA7LZfLlm0PDQ0Z75xgQK+EaV6UN2EN8R8wEb0Xqqfh4WE7JioFjg/5Ctg1vvQz/07vguOl6iAYoJmUz+eVz+etuvIbr8BSviSJpC5pDJ9KSj9lYWFBCwsLpgt02B4BGFb5fL6LLstchXOuS5CQQMc+6FgsplKppLW1NZM8pyL48pe/rLNnz97VvRACQLATbb0YMA753XfftSE01BmhUsKeAd4ol8uWnWezWctuyZRxgkBFlPtUG1BMyV7h6kNbrdVqSqfTlpETLHBu/kQx1QhOBGeORj9LephUxiExFd1sNo2vD9OFIAgbBwc8NjbWpQKKlDdVR28w4FpAmaShvLW1ZVLMfo/Bl0xmdgE1VrJhn2bK82gEA5sxN0BwHRsb0+DgoEFzVDsDAwNd2+L8pjGP5f8+PXhxcVHvv/++isWi7X/oNZruuVzORAZ91heaVRwvDDGuSyLRWZG6srJiO7O/+MUvamrqMELl0S0EgGDBPPOZIWSQrAwkwz537pw1gn1oAcEzNGz8YatWq2VNZiaAJdnEKU4MaAfHBATVarU0MTGhra0tDQ4OGuMErB04iAydSWQyy76+Pms++zuRaXpybn5jnNeVOpksxwgjp1wuG0RCFcTf/WCQzWa7OPowhlguBJuKf0d909ftZ85BkjVzacpTYQDnAC3h+P0dyEBTIyMjXVBeFEU2pAUkBeREdUcFxneEZIAG9tramt59912TE4G62mv5fF6ZTEYTExNdw38EZoIxgQB4iB3IzWZTa2tr+vSnP23zJXdqIQAEC3YLYzLZd5yYpDYAACAASURBVMj0Dvr7+zU9PW0NYjJDsk+yQaCfTCZjZT2sot5GJ01KlqzAbELSgcDki4QBB/X399seBpqhOH/gE0kGvZCFt1qtrillSVZxSN2LYXxZC9gyMIqAeWAU4TCR8W42m8rlch8IBjB/qFyAcXZ3d60HgcPHwVN1DAwMWF+ECoNmPf9nxgFpCmAo6UAMjlWcfkUA/EaD3mcjcW16gwH9oh//+MdGu2VTWq+lUimNjY3ZjmImyznPZDKpWq3WtfGM6imfz+v555+/a0G4EACCBTui+eqT8NehB5KhPfnkk11a80A89A7IVMHT4bmD429tbVmjEx47ToHMnVkDehjZbNaaorz30NBQ107kXC73AZ0eGuD0FICqyJ6Bj3yICfwbR0kwwOHTvASe8bWHJFmFdLPKgDWaOFSapUh++zMF/nWmIoqiyLJn9koAd/G6fiDgWHzq7/DwsO2p8HdOE2j9HckYlZYv2VEsFrW4uGhDZfD9ew2Hns/nNTY2pmQyqXQ6bdIn6D9RJdHv+OxnP2vT63dqIQAEC3aHRnYOe6ZSqejatWvm5CcnJ3XmzBnj1cNqwYlSHcCKAVaqVCrmyMhyCRpAE7xOL0zExCnzCmTssJDa7bYFDLJqcH2gDyaZfagI+QzwagKhz4Cib4Cj3NraMl0mqSNh4O8CRnW12Wx2BQOqKGQjuM5MLMfjcZsv8IMBEBE4vt8HIAgA5wCPQW31J50HBweN1w+l199rgVKpv2YSo6FOEHXOqVKpGAWZfcaH7RCIxWLKZDI2zzA+Pt6l9wRcBEX005/+dKgApBAAgj1865UZqNVqun79uvH6c7mczpw5Y4M/SBggIQEbh4EvJkwRLsMhk03zd7+Z2m63bQqZ+3dsbEzb29tdWkUMGSEch8OW1DXshOgZzU4CmD+3AH2ToESTl4wZZwy9FHkFf1fvTxoMaMAzeezvC5AO1kbyPpIMj6c/4wvD+TMMyDhA6R0YGLBl7v6goSR7T+C3w3oFrVbLAmC1WtXa2poxqyqViq0s7TVkvPP5vGZmZkyQzt8899xzz3VtfLsTCwEgWLD7YL2TyYVCQUtLSwbPTE5OamJiwpwFctSU+ltbWwZ3METVbDZVKBSsSYgjBscmM6d5S6YINj0+Pm6ZJPg41YskY5zAqKlWq5Y9Q0sElgGrlw6knsnCeQyQCw4ynU6bTHW5XDbpCpq+QF0461sFAxq/fpMXjj1BhUBAk5u9B+DqkrpkLvz5Bn8ojM8hm80qm81aAGeuAeyeAO5v7OLa87lAZ0UUjs96bW3tUHiIIbLx8XFNTExoZmbGZgKef/75u94ZHAJAsGAPwGCDRFGkYrGopaUly6qRt2Zwy3d00C/BnoeGhpTP5+X25amZ5CWzBR7BKZNx1+t1WzO5t7en8fFxq1p80Tua0pJMCoOJY2QuaFaT2QN30BOArooxBEYwQrkTCKparapcLlvlkMvlzKGur68bvMWEMtAP14hBMb+hDNxEMOB6ULX42T/MKgb92J3sf2YENmi32WzWjh8HzzQ4PQl/8RCDZjCROFb4/VQ4VAi9BjyUzWY1NTWl6elpPfvss4fKYP8kFgJAsGAP2PzJ5EajoWvXrpm8xMDAgE6dOqXx8XFj8zAshJxyrVZTKpXSwMCADVIBI5H5Q+8cHh42p4mjbDQaKpVKxlzCmW1vb1ulMTAwYJRU+ga8Jo4X41j8KVx/+AwmDdUQjV6yfxrJUqensLa2ZgNRVACSuhrfuVzuA8GACsp3sK1WS5lMxhx8FEVddNGhoSE1m80uCApoZ2dnxwbdgLlg49D4ZouYz90n4FBh9VYFUqdC5DiRs4AtBXuIoOgbDK7h4WF96Utf6gq0d2IhAAQL9pANrDiKOtvLFhcXbbkNZT88eCAU2DHr6+u2jSqZTNoSGjj6NGlhE4HrA0UgbwDLh53AKJjSvMY5wqH3ufi8hyRTuiQI0D/w5x4YPqMJC1QE3MWcw9bWllZWVqyZOjw8rEwmI0ldlQEO3mcT0TchWDF5THXhnLO5BeScoctCJ4X6yY5hf+Kaxj4BaGRkRNls1ioFehU01nle7zpLILh2u21L7GFvURlVKpVDJaO/+tWv6tSpU3f13QsBIFiwY2T+ZPLe3p6uXLmiSqViipynTp3qwuljsZjW19dt2TorE8HcU6mUarWa4easL0wkEhoZGbHsGlZRoVCwbJcMFxljIBSE15hq5vWcO9jHLHWyZNRNWSLjN5FZmEKVQWOXPgXVgT8FC5+evQUMpQHDjI6O2vHwPJw6cA/HgLY/OD7PAYrzFVVRSt3e3rZGOwGEzw1GF/sUqBagbhJkqHz8dZY8rtlsqlgsGmNIklUE1Wq1a8r4137t13TmzJm7+r6FABAs2DE2MGZJunHjhpaWloy7Pj4+rlOnThkzCFwbHLxer5tc9eDgoPL5vDVgccrg1tBHgTHYOcxmK6nDKCKrBdJBzyiKoq4BMeSqaTAzCMeEsnQgzAbe7w+fARMBreBcE4mEYeWI2iWTSZOlQG2z1WqZ/o4fDGBdbW5uWlAE16fKIqunavKvKefGa9FX8QXlqBzy+bxGRkasaewvreGcCbS9QnRIjBQKBXsPoLtCoaB6va6vfOUrIQBIIQAEOzlG5r27u6v33nvPsv7BwUGdPn26S0IB5U/opgx3+ZvB1tfXbcgMzSGmeWkYg4XX63Xj3Y+Pj9vxwFXn8UBVNIppIgNrwTYCZyd739nZseEuBNqk7iaydMBW4liATnDeExMTJqIGVNMbDLa3ty0AbGxs2HWip0LzOJlMWvCR1CXIBuvKXy3q7zeAhZROp02yAafPecOsoirwm8bME1SrVdtb7E8bf/7znzdI7E4tBIBgwR5R8yeTFxcXVSgUzEmePn1auVzOslnYLUww12o1y/xZXALjiL3CqFfCqAGvrtVqtnVNkskobG5uKpVKaW9vT8lk0hrCkszh07D1JSsYuCLzpT/hS2NThSCWhiyGv6S93W6rVCoZOyoWi2lsbEz9/f0ql8sWDJhO7g0GDPNBx0yn0xoeHrZqh7mGVCplFQD9CeQowOuBsPCjDMmNjo6aWqtfFQAJUUXQpwASRF+JxTFRFOlnfuZnwiCYFAJAsGDSwWQyuw6Ygh0ZGdHMzEyX7AJsE/oCaArF43ETsGObGeyUVCpluL7fbGXJDhTUdDptAUb6oJrm8PCwVQZMPmNMO9MTkNS1+QxoRpKJvVEFEczI1iuVilZXV+26oAK6vr5ux8S5+sGAaqVarRqMRj8F+QxmDpjfYJiMnQi+XIc//Qz7KJvNKpfLmeQFfRV/50Fvr4BAUKvVVCwW9fTTT4c5ACkEgGDBes2fTEaznmbrzMyMOT6cDZk/UIsvP5HNZm0FI3RLFsnQSGbAimUyLKrJ5/PWeIZpJB0wn6hCgEugskqyRrUkm09AH4fXo28AvRVYh0CBjtHW1paWlpaMppnNZpVKpWxSm2BAIECemQZ6uVy2SWymmIHU/N8Z7KIP0Wg0bLCNa0o1A6OKZT9k/1QFyG8QOKjkgNkQFrwbCwEgWLATYDjcarWqxcVFU9vMZDKampoyDR9/Cxc9BJQpES1rt9taX1+XdEDHRDYhl8sZ9RNIChhqbGzMltSA39OroJkLX5/joApgQAw5axRMW61W1/DZYcNWVBt+32F1ddVE7ZCGrlarXRvYeB6Kosg8l0olo60SANn1zEwEgQAGENRS+iD+7ARNYWYbUFUFEqORT2CERUVAuBs7VgHAOfd3JP1ZSQ1J70n6S1EUVW79rBAAggX7SY0scmFhwbJ/SZqYmNDo6Khl8Ht7e6aeyaYtNHzYc8uwFA6SwbLR0VFreK6urhrUlEwmNTo6atmu7whpcqPOKcmUPGEPuf19yWjlkzGzdMdvIrfb7a55ADSMWMrTarW0vLxs1M5UKqV8Pm/DdO12W6Ojo7YWsr+/32YCKpWKCoWCpA6TKZvNWsaezWaVyWRs1gGYiuCEGJ0vseH3RKDP0gcgcFIVIK19t3bcAsCfkfSvoihqOuf+S0mKoug/ut3zQgAIFuzODXy+UChoZWXFlENzuZxlpeDYaNsDt0CVlGT7BxhCKxaLRg1NpVLWaIbRgk7P2NiYTRij1yMdSDBEUWScf/SCUEx1+zuaE4mEwUBSp29AD8KHuhCr29jYkHSwG5jAsbq6ahO4ZOUEriiKjB1FVQQVtFgs2t5o+gNMHePQ6RWgQMrPOzs7JgFNX+QweMhnTQ0ODtryn7uxYxUAug7AuV+S9MtRFP2F2z02BIBgwe6dke1fu3bNJCiSyaQ5MobMfPkFXwIhHo9rZGREqVTKGsmlUqlrd8Ho6KhNPq+trRn9cXR01KQtkE8gEEiyyV9km9mzgL9C3bTdbhsjis1nvvyDJNMv8ucBYD1xbCsrK6azNDo6anpI0gFMRGWAwufq6qqxqJDrANMfHR01WmytVtP29rY17n3hvXQ6bcGPa4+8N5USmlB3Y8c5APwzSb8XRdH/dLvHhgAQLNj9MRqsN27cUKVSMehidHTUtnXBXydY7O3tmdOFR89uY3oPpVJJIyMjtqd3YGBAGxsbWl5e7oJRcrmcdnZ2bOoWyQx2KFOZwBLyhdSAV6SDKVs/g5Y6VE9JVj0Ac6EHBMxSrVa1vLxsxzI2NmZyEX4VwjnDjlpZWbH5CV9em93ETD/DtALSosfQm+XncjlrjNPTuBt74AHAOfd1SYdtMv7NKIp+f/8xvynpvKQ/F93kQJxzX5P0NUmanZ196erVq/fleIMFC3ZgcPSvXbtm8AUsGDacDQ4O2n5f36HB52fYrFqtWnXAJDB7lHd3d7WwsGDMpXQ6rfHxcVuCw/AZtEyydNQ4WY8JnARFFRYN2X+j0bBFPLBq0PBvNBqqVqsmR4HDrdfrWlxcNDlohrFuFwyuX79uDCuUSuPxuMbGxpRKpbS1taX19XWrqhj485cBQRlNp9N64oknPiAy95PasasAnHO/KunXJf1cFEUfXKR5iIUKIFiwB29QTa9evWrTsGStYNowi5CTBl6CQ8/UMfh4pVLR5uamYd9jY2NyzunatWva3Nw05z49Pd2l188AGQ6SJjJ9AxqxkrqGz/yqYGtrS+l02hwsazZhRAHrEAwYagMqI4jh/P1gwJxFrVbT6uqqUVLpPyAaNz4+bterUChYzwJaKYJ/7XZbzz33XNee4juxYxUAnHOfk/R3JX0miqLCUZ8XAkCwYA/f2u221tbWVCwWbUkLwQBZ6mQyac1Pf1IYSmMmk1E8HjeBu7W1NXO2mUxGQ0NDunHjhjVcnXOanp42rZz+/n4bqoJBI0nZbNYoo3t7eyaqFkWRzUQQBNBJAgbyp3qhnjJM5s8bNBoNLS0tmbwG1Fp4/34woDJYXFzU8vKywVLMLYyMjCifz5vUBbMEVETxeFyf/OQnrZ9xp3bcAsBlSUlJpf1/ejWKol+/3fNCAAgW7PgZjWSkJdj8RZMYdUxopNAd0euHWlkul9VsNrW2tiZJRkMdHR1VuVzW4uKiSVNPT0930UolmVwD9EkYRfQBEMeDeQNOjxonjV+ybfoKhzWRE4mEUTiXlpZUKBRsRzTKqc65Ls0mgsHCwoJWVlYM8gJ6Gh8fN7rt6uqqzUH89E//dJCCkEIACBbsuFsURbpx44bK5bIpfU5MTEjqNGKZLKYRimYRbB+axUzb1mo1bWxsWBMYVtG7775r0A3L1ZFlRukUSmWz2TStH4a+1tfXrW9ARi7J8H42oMFAYvgMqAitJLj9+XxesVhMKysrWl5ettcm0LARjknoZDKparWq9957zwITstipVMoWBa2trenZZ58NAUAKASBYsEfN6vW6rl69qmazqXq9bhkvjh5aKE6VgS4CBdvO2Ft848YNy7KZyH333XetSZxMJjU1NWV9Axa9MGkLvs66yGQyqUqlYnMFTP1SRdDY7u0bMDzGms719XXD+Ok7lMtlXb16tWvvMY+BGcUxlMtlvfPOO7Z0B5prLpfTc8899+ixgO6HhQAQLNija1EU6f333zcohewdXBxmD9g8GD+BgE1fDKcVi0Xt7u5aI3l8fFzXr1+3JrVzTqdOnbJJYobLkK1gqxdN5MHBQZOlYJMYWTtQESJtTOqySN7/e6lUst0N9EQqlYoWFhaMpjo8PGyBBpjIOadkMqlSqaQf/ehHBgH9/M//vMFRd2ohAAQLFuxYWaVS0dLSkqQO/35kZMSWpviQDY1k5CYQlUO1tFwu23AWrJ5sNqvNzU3duHHDpo7PnDlji2bQ3Nna2rLmbbvdViaTsf0A4P6STIOI5/k7kXs3nxEM2u22NaGhzabTaW1vb+vy5cs2KewvuukNBktLSzp16lSAgKQQAIIFe1yt1WppYWHB5Cfa7bYNYTFYhXCaP/mLgBqQEiyaQqHQJUk9NDSkK1eumBb/xMSE0um0CdU556xBTd+A4SyawiyDkToNYpg59As4LuQo0um0idoRLKhEUFhttVq6fPmyHXcikdDk5GRXMHgkB8Huh4UAECzY42/AKDdu3LAsHQlnFDZZV4kaKHARzVqYOhsbG1pfX7f+A/ML77//vslZj4yMGBQlHTSRYfXwurFYzOAofycyMhD0MugdMMHsi9bRD2D72tDQkLGlnHO6cuWKyuWyrcicmZnRuXPnHr9BsDuxEACCBTt51mg0dOXKFWMOQcEkY6ahK8mW0u/u7tq/Mx1cq9VUr9dVLBaVSCSUSqU0PDystbU1bW5u2jYvVk3SWEbZE2lrFu4wH7C1tXWonDXNZ1Z1UjHQBEfZtNFoaH193RrfBKqrV69qbW1NL7/8ssFUd2ohAAQLFuyRN2imyD8whIZDJaNmzwC8fyaJaeyCzyNex/DWzs6OqtWqMXRmZmZsyxfyEayCjKLIHDa7ElgsLx3IUgA7+ZPITBH7w2f0DSqVionPpVIpk7a4GwsBIFiwYI+d1Wo1LS8vd1UHw8PD2tvbswErf7sWmDx9g3g8rlQqZTuCkb4eHBy0fcAI1I2Pj2toaEitVssqjq2tLWMMMeGMWirUV/oK6AJBdWWHgL/0xd/JzKKes2fPhgAghQAQLFiwm1uz2bTqoN1ua29vzzaX+fg9SqMIzrGpS+o0dxuNhur1utbX123XMpx//GUmkzGtHgIANFAopjSBCULoCNGj6JWrPkzBlEX0IQAoBIBgwYIdzaL9JfRra2u2x2B4eNicM0tqwPqZ3AUqcs5Zc7ZYLNrieHB6Nn/RS0Czn8oAqWyawDwPh87z2QPQu+aSiiaVSllP4W7sZgHg7lrLwYIFC3YMjaExdP4bjYZJO+N40fJBYhrpaYIBWTk7ks+ePavt7W1bTMPCnFqtZpvPBgcHlc/nbbkLGX+5XDb4KJlM2gAZTeRisShJRvuEogq19H5ZCADBggV77K2/v19PPvmkpM7AV7lcVrFYNCZOJpMxHSBJVh34Sqarq6umCJrP59Xf32+MIqkDH21ubur69ev2O0twCAbxeNz2APA+NK6TyaQt0ZE6dNR7sQ/4VhYCQLBgwU6UsX9gbGxMURRpe3tby8vLBssw2evDQv39/cY0okkLjj80NGQ7AJxzqtfrisfj2t7eNkYR+v4DAwPWKJY6tNWdnR3F43GDjKCZsnd5amrqriGgm1kIAMGCBTux5pzT0NCQnnrqKUmyKWK2mLGykmDQarWsaYw8BTAStE+WvZRKJW1sbNhk89LSkjGPCAboEEFbLZVK6u/vV71e1/DwsLGC7peFABAsWLBg+5ZIJDQzM6OZmRm1223VajWtrKx09QpQGMXYGIasBDRRqoPh4WEVCgXV63XV63VJ0vLychf1M5PJ2CpI55wajYZWV1e7ZDDuh4UAECxYsGCHWCwWUyaT6WoWr6ysaHNzs4tmylYyfzENdM5ms6lyuWxw0ezsrC2HhxZaqVRs+GtoaMh2CIyNjRlj6X5ZCADBggULdhtD9mF2dlZSBwra2NjQ2tqa6RClUinbjez3EGguMyswNDRkDKVEIqFSqWQLZqrVqtbX103iIpPJaHR09L6dVwgAwYIFC/YTGjg+g2a7u7taXl7uGvYaGRmxn8HxoyhStVo1hVEGxtLptKanp7Wzs6PNzU1VKhWVSiVVKhXNzc3dtyogBIBgwYIFuwtjsheaKeJulUrFHL8vAJdMJk06olqtKpFImLYQw2cMfzFzcL/soQQA59x/LukXJbUlrUl6JYqi5YdxLMGCBQt2L62/v1+Tk5OanJy0PQErKysmWw3Wz85hxOJqtZptJkP+mQnh+2UPqwL4O1EU/ZYkOed+Q9Jfl/TrD+lYggULFuy+GCJw586dUxRFVh2gV8QWMudc19Yv1kEiXXG/7KEEgCiKNrxfU5IeHUGiYMGCBbsDY83j1NSUpqambNk8i28QjkM3qNFo2ETy/bKH1gNwzv0tSV+RVJX0p27xuK9J+pok68AHCxYs2KNubCNjNSTcf/YIs5Pgfs0ASPdRDdQ593VJU4f86TejKPp973F/TdJAFEV/43avGdRAgwUL9rgbMwdsL5udnTW56ju1B64GGkXRnz7iQ/8XSf9C0m0DQLBgwYI97sbMQT6fVz6fv6/vdf/ApVuYc+5p79cvSPrRwziOYMGCBTvJ9rB6AH/bOfchdWigVxUYQMGCBQv2wO1hsYD+/MN432DBggULdmAPBQIKFixYsGAP30IACBYsWLATaiEABAsWLNgJtRAAggULFuyEWggAwYIFC3ZCLQSAYMGCBTuhdt+kIO6HOecK6swN3K2NSSreg9d52BbO43hZOI/jZeE8DmwuiqLx3n98pALAvTLn3BuH6WI8ahbO43hZOI/jZeE8bm8BAgoWLFiwE2ohAAQLFizYCbWTGgD+u4d9APfIwnkcLwvncbwsnMdt7ET2AIIFCxYs2MmtAIIFCxbsxFsIAMGCBQt2Qu2xDgDOuc85595xzl12zv3Hh/w96Zz7vf2/X3LOnX3wR3l7O8J5vOKcKzjnvrP/31cfxnHezpxzv+ucW3POvX2Tvzvn3N/bP8/vOedefNDHeDs7wjn8rHOu6n0Wf/1BH+NRzDl3xjn3r51zP3TOfd859+8f8phH4fM4ynkc+8/EOTfgnHvNOffd/fP4Tw95zL33V1EUPZb/SYpLek/Sk5L6JX1X0vM9j/nLkn5n/+cvS/q9h33cd3ger0j6+w/7WI9wLv+GpBclvX2Tv39e0r+U5CR9UtKlh33Md3AOPyvpnz/s4zzCeUxLenH/52FJ7x7yvXoUPo+jnMex/0z2r3F6/+eEpEuSPtnzmHvurx7nCuATki5HUXQliqKGpP9N0i/2POYXJf2j/Z//iaSfc865B3iMR7GjnMcjYVEU/X+Syrd4yC9K+sdRx16VlHXOTT+YozuaHeEcHgmLouhGFEXf3v+5JumHkk71POxR+DyOch7H3vavcX3/18T+f70MnXvurx7nAHBK0nXv90V98Ithj4miqCmpKmn0gRzd0e0o5yFJf36/TP8nzrkzD+bQ7rkd9VyPu31qv5T/l865Fx72wdzO9qGEj6uTdfr2SH0etzgP6RH4TJxzcefcdyStSfp/oii66edxr/zV4xwADouMvRH1KI952HaUY/xnks5GUfRTkr6ugyzhUbNH4fO4nX1bHd2Vj0r6bUn/9CEfzy3NOZeW9H9K+g+iKNro/fMhTzmWn8dtzuOR+EyiKGpFUfQxSaclfcI59+Geh9zzz+NxDgCLkvxM+LSk5Zs9xjnXJymj41fe3/Y8oigqRVG0u//rfy/ppQd0bPfajvKZHWuLomiDUj6Koj+UlHDOjT3kwzrUnHMJdZzm/xxF0f91yEMeic/jdufxKH0mkhRFUUXSH0v6XM+f7rm/epwDwOuSnnbOPeGc61enafIHPY/5A0m/uv/zL0v6V9F+h+UY2W3PoweX/YI6OOijaH8g6Sv77JNPSqpGUXTjYR/UT2LOuSlwWefcJ9S5x0oP96g+aPvH+A8l/TCKor97k4cd+8/jKOfxKHwmzrlx51x2/+dBSX9a0o96HnbP/VXf3Tz5OFsURU3n3F+R9EfqMGl+N4qi7zvn/jNJb0RR9AfqfHH+R+fcZXUi6Zcf3hEfbkc8j99wzn1BUlOd83jloR3wLcw597+qw8gYc84tSvob6jS7FEXR70j6Q3WYJ5clbUn6Sw/nSG9uRziHX5b07zrnmpK2JX35GCYVkvRpSX9R0lv7uLMk/SeSZqVH5/PQ0c7jUfhMpiX9I+dcXJ0A9b9HUfTP77e/ClIQwYIFC3ZC7XGGgIIFCxYs2C0sBIBgwYIFO6EWAkCwYMGCnVALASBYsGDBTqiFABAsWLBgJ9RCAAgW7D6a6yi1/v2HfRzBgh1mIQAECxYs2Am1EACCBbuFOef+qXPuW/sa7V/b/7f/xjn3Rq9uu3Nu3jn3zX3Rsdecc8M9r/VvOecuHmcZgmAny8IgWLBgtzDnXD6KovL+eP7rkj6jjnpveX9q8/+V9BvqjO3/SNKXoih63Tk3os707L8j6fz+4/5DSV+Iomj9YZxLsGC99thKQQQLdo/sN5xzv7T/8xlJT0v62H410KfOCP/z6qgy3oii6HWpI0AmSfsSNH9KnSDwZw5RqgwW7KFZgICCBbuJOed+Vh1Rrk/tSwm/Kek5SX9V0s/ty2//C0kD6kj13qycvqLOtqpn7vcxBwv2k1gIAMGC3dwyktajKNpyzj2rzlrEEUmbkqrOuUlJ/+b+Y38kacY5Ny9JzrnhfcleSboq6c9J+sfHdRlJsJNpAQIKFuzm9n9L+nXn3PckvSPpVXV2Mr8p6fvqZPYXJCmKooZz7kuSfnu/X7CtTvWg/b+/45z7C5L+D+fcn42i6L0HeyrBgn3QQhM4WLBgwU6oBQgoWLBgwU6ohQAQLFiwYCfUQgAIFixYsBNqIQAECxYs2Am1EACCBQsW7IRaCADBggULABMypwAAABJJREFUdkItBIBgwYIFO6H2/wMsGkH6uf2L2QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "([1.0395005047637074, 0.6997253056068936], -2.3697092665856547)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "logistic_regression_algorithm(features, labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Logistic regression using Turi Create"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\"><table frame=\"box\" rules=\"cols\">\n",
       "    <tr>\n",
       "        <th style=\"padding-left: 1em; padding-right: 1em; text-align: center\">x1</th>\n",
       "        <th style=\"padding-left: 1em; padding-right: 1em; text-align: center\">x2</th>\n",
       "        <th style=\"padding-left: 1em; padding-right: 1em; text-align: center\">y</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">1</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">0</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">0</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">2</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">1</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">1</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">1</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">2</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">1</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">3</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">2</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">2</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">3</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">2</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">2</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">3</td>\n",
       "        <td style=\"padding-left: 1em; padding-right: 1em; text-align: center; vertical-align: top\">1</td>\n",
       "    </tr>\n",
       "</table>\n",
       "[8 rows x 3 columns]<br/>\n",
       "</div>"
      ],
      "text/plain": [
       "Columns:\n",
       "\tx1\tint\n",
       "\tx2\tint\n",
       "\ty\tint\n",
       "\n",
       "Rows: 8\n",
       "\n",
       "Data:\n",
       "+----+----+---+\n",
       "| x1 | x2 | y |\n",
       "+----+----+---+\n",
       "| 1  | 0  | 0 |\n",
       "| 0  | 2  | 0 |\n",
       "| 1  | 1  | 0 |\n",
       "| 1  | 2  | 0 |\n",
       "| 1  | 3  | 1 |\n",
       "| 2  | 2  | 1 |\n",
       "| 3  | 2  | 1 |\n",
       "| 2  | 3  | 1 |\n",
       "+----+----+---+\n",
       "[8 rows x 3 columns]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import turicreate as tc\n",
    "\n",
    "data = tc.SFrame({'x1': features[:,0], 'x2': features[:,1], 'y': labels})\n",
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<pre>Logistic regression:</pre>"
      ],
      "text/plain": [
       "Logistic regression:"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>--------------------------------------------------------</pre>"
      ],
      "text/plain": [
       "--------------------------------------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>Number of examples          : 8</pre>"
      ],
      "text/plain": [
       "Number of examples          : 8"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>Number of classes           : 2</pre>"
      ],
      "text/plain": [
       "Number of classes           : 2"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>Number of feature columns   : 2</pre>"
      ],
      "text/plain": [
       "Number of feature columns   : 2"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>Number of unpacked features : 2</pre>"
      ],
      "text/plain": [
       "Number of unpacked features : 2"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>Number of coefficients      : 3</pre>"
      ],
      "text/plain": [
       "Number of coefficients      : 3"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>Starting Newton Method</pre>"
      ],
      "text/plain": [
       "Starting Newton Method"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>--------------------------------------------------------</pre>"
      ],
      "text/plain": [
       "--------------------------------------------------------"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>+-----------+----------+--------------+-------------------+</pre>"
      ],
      "text/plain": [
       "+-----------+----------+--------------+-------------------+"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>| Iteration | Passes   | Elapsed Time | Training Accuracy |</pre>"
      ],
      "text/plain": [
       "| Iteration | Passes   | Elapsed Time | Training Accuracy |"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>+-----------+----------+--------------+-------------------+</pre>"
      ],
      "text/plain": [
       "+-----------+----------+--------------+-------------------+"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>| 1         | 2        | 0.000512     | 1.000000          |</pre>"
      ],
      "text/plain": [
       "| 1         | 2        | 0.000512     | 1.000000          |"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>| 2         | 3        | 0.000933     | 1.000000          |</pre>"
      ],
      "text/plain": [
       "| 2         | 3        | 0.000933     | 1.000000          |"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>| 3         | 4        | 0.001338     | 1.000000          |</pre>"
      ],
      "text/plain": [
       "| 3         | 4        | 0.001338     | 1.000000          |"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>| 4         | 5        | 0.001717     | 1.000000          |</pre>"
      ],
      "text/plain": [
       "| 4         | 5        | 0.001717     | 1.000000          |"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>+-----------+----------+--------------+-------------------+</pre>"
      ],
      "text/plain": [
       "+-----------+----------+--------------+-------------------+"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre>SUCCESS: Optimal solution found.</pre>"
      ],
      "text/plain": [
       "SUCCESS: Optimal solution found."
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre></pre>"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "classifier = tc.logistic_classifier.create(data,\n",
    "                                           features = ['x1', 'x2'],\n",
    "                                           target = 'y',\n",
    "                                           validation_set=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model coefficients +-------------+-------+-------+--------------------+--------------------+\n",
      "|     name    | index | class |       value        |       stderr       |\n",
      "+-------------+-------+-------+--------------------+--------------------+\n",
      "| (intercept) |  None |   1   | -8.959708265685023 | 6.844844514902394  |\n",
      "|      x1     |  None |   1   | 2.972553703911967  | 2.6977310191336055 |\n",
      "|      x2     |  None |   1   | 2.498635186535742  | 2.455296103059154  |\n",
      "+-------------+-------+-------+--------------------+--------------------+\n",
      "[3 rows x 5 columns]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(\"Model coefficients\", classifier.coefficients)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yRKroyk3ddML04hI2Zv9sTHmfzf524bAGeBzY0xQBs83Bl4yxtzSFc70wjTKk+zatYvevXvz88+pE/BOnToxdepU7rnnHouTKVdz2xemMcb872ZLFn+7CTh2B7mV8niVK1dm06ZNTJ06lbvuuouFCxdis9n44osvtMW1yjHZ/Y7AUeqKSIyIrBSRwMwGiUhfEYkUkcjDhw/nZj6lLOfl5cWgQYOIj4/n0Ucf5dixY3Tt2pXHHnuMAwcOWB1PuQErC0E0UNYYE0rqKamZXuPPGDPTGBNmjAkrXrx4rgVUypmUK1eO1atX8+mnn1KoUCFWrFhBYGAgH3/8sba4VnfEskJgjDlljDljv70C8BGRYlblUcoViAg9e/YkMTGRdu3acfr0afr370/Tpk3ZvXu31fGUi7KsEIhICRER++1a9ixHrcqjlCspWbIk3377LQsWLODuu+9m48aNhISE8N5772mLa3XLHFYIROQrUk8zrSwiSSLSW0T6i0h/+5COQLyIxABTgM5Gv/1SKttEhE6dOpGYmEiXLl04f/48L730EvXq1dMW1+qW3PT0UWekp48qlbEffviB/v37k5SUhI+PDyNHjmT48OH4+vpaHU05gds+fVQp5Tqutbju168fly9f5rXXXiMsLAw9cFJZ0UKglBsJCAhgxowZbNiwgfvvv5+4uDhq167Nyy+/rC2uVaa0ECjlhho3bkxsbCxDhw4FYMKECYSGhrJ582aLkylnpIVAKTeVP39+3nvvPbZu3UpgYCD//e9/adiwIQMHDtQW1+oGWgiUcnO1a9cmKiqK0aNHkydPHj788EOCgoJYvXq11dGUk9BCoJQHyJs3L2PGjCEqKooaNWrwxx9/0KJFC3r06MGxY9oSzNNpIVDKg4SEhPDLL78wfvx48ubNy9y5c7HZbHz77bdWR1MW0kKglIfJkycPw4YNIzY2loceeoi///6bDh060KlTJ/7++2+r4ykLaCFQykNVqlSJn376iWnTplGgQAEWLVqEzWZj3rx52uLaw2ghUMqDeXl5MXDgQOLj42nWrBnHjh2jW7dutG7dWltcexAtBEopypYty6pVq5gzZw6FChVi5cqVBAYGMmPGDG1x7QG0ECilgNQmdj169GDnzp20b9+e06dP8+yzz/Lwww/z3//+1+p4yoG0ECilblCiRAkWL17MwoULufvuu/np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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "intercept, w1, w2 = classifier.coefficients['value']\n",
    "\n",
    "utils.plot_points(features, labels)\n",
    "utils.draw_line(w1, w2, intercept)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
